我正在學習Java套接字編程,而且我非常積極,我的代碼是正確的,但由於某種原因服務器和客戶端不通信。我不太確定他們是否連接。這是我迄今爲止所做的。Java客戶端/服務器套接字問題
服務器:
public static void main(String[] args) throws Exception
{
Main_Server server = new Main_Server();
server.run();
}
public void run() throws Exception
{
ServerSocket server = new ServerSocket(444); //Port
Socket sSocket = server.accept();
BufferedReader bfr = new BufferedReader(new InputStreamReader(sSocket.getInputStream()));
String clientMessage = bfr.readLine();
System.out.println("Client: "+clientMessage);
if (clientMessage != null)
{
PrintStream ps = new PrintStream(sSocket.getOutputStream());
ps.println("Message Received.");
}
}
客戶:
public static void main(String[] args) throws Exception
{
Client_One client = new Client_One();
client.run();
}
public void run() throws Exception
{
Socket clientSocket = new Socket("localhost", 444);
PrintStream ps = new PrintStream(clientSocket.getOutputStream());
ps.println("Hello, server.");
BufferedReader bfr = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String serverMessage = bfr.readLine();
System.out.println("Server: "+serverMessage);
}
於是我運行服務器和第一客戶端後(我目前使用NetBeans IDE 8.1)。程序運行,只是坐在那裏,但之後沒有任何反應。爲什麼是這樣?我只有兩個空的控制檯。 謝謝你的時間。
看起來乍一看。 444是一個特權端口號,使用大於1023的端口來確保這不是問題。 (Davide的答案聽起來像是一個可能的解決方案。) – markspace
@markspace謝謝你,我已經嘗試了4444。但再次感謝您的提示:) –