我已經創建了兩個獨立的程序,一個客戶端和一個服務器。我試着在eclipse中測試它們,並在同一臺(Windows)機器上運行(如本地主機)上的可運行jar。它完全按照它應該的那樣工作。套接字網絡只適用於localhost
但是,當我將clinet(和後來的服務器)發送給我的一個朋友來測試它時,它不起作用。我們確保端口是開放的(即使在客戶端),但無濟於事。它沒有工作。我只會得到一個超時ConnectException。
我使用的插座是50178-50180。
我不知道該怎麼想。任何想法可能會出錯?
這是套接字代碼:
(serverside)
serverSocket = new ServerSocket(50178);
while (true)
{
clientSocket = serverSocket.accept();
streamOut = clientSocket.getOutputStream();
objectOut = new ObjectOutputStream(streamOut);
streamIn = clientSocket.getInputStream();
objectIn = new ObjectInputStream(streamIn);
(stuff)
}
(clientside)
Socket socket = new Socket(ipAddress, 50178);
OutputStream streamOut = socket.getOutputStream();
DataOutputStream dataOut = new DataOutputStream(streamOut);
DataInputStream dataIn = new DataInputStream(socket.getInputStream());
我不包括代碼的其餘部分,因爲它的I/O的東西(它確實工作,因爲它工作在本地主機)。編號: 我添加了請求的代碼。我也試過了兩臺電腦,它們在同一個網絡上(女巫本地IP 192.168.1。*)。有效。
運行服務器的人是否擁有公共IP地址?客戶是否使用該地址? – Joni 2014-11-01 18:43:30
是的,使用了公共IP。這是正確的。 – Karlovsky120 2014-11-01 23:12:34