2011-09-04 211 views
0

剛剛對我在java中編寫的簡單聊天程序提出了問題。 該程序使用TCP從服務器/客戶端來回傳輸簡單的消息字符串。它適用於我的網絡上的所有計算機。但是當我把它發送給我的一個朋友,看看它是否從他的電腦上工作,它沒有。所以我的問題是:我是否需要添加一些特定的代碼,以允許來自外部網絡的其他合成信息的消息被接收?或者它是防火牆的一種?Java中的簡單網絡聊天

+0

你的服務器在哪裏?在你的網絡之外還是之內? – Whiler

+0

在我的網絡 –

回答

1

可能是防火牆或路由器。

防火牆:端口未打開。

路由器:消息不會轉發到承載您的應用程序的機器。

或者您的應用程序使用內部IP,而不是IP從互聯網(其中必須被轉發到您的內部IP)

+0

感謝您的快速響應:)不,運行服務器應用程序的計算機不在路由器後面,但是用於從客戶端程序(我的朋友)接收消息的IP是此計算機的內部IP。所以只爲了澄清,我從這裏做什麼? –

+0

不是那麼容易... 如果你想能夠與他聊天,你可以使用外部IP並將端口路由到各自的機器... 但是,這將不再適用於您的機器... 其他的解決方案,其作品無處不在..你每一個客戶。該客戶端發送的端口,它們所聽上啓動一個TCP監聽器,服務器......你路線**不同的端口**您的不同機器......或者你只是從服務器拉取消息,檢查它是否適用於這個用戶/機器......並將消息推送給用戶到服務器...... – Whiler

0

上不是如果不指定任何在計算機碼特內部網絡,那麼它將不會以不同的方式處理它們。它不會自己處理不同的連接。我會檢查你的(或他的)路由器並打開你使用的任何端口。