1
我在使用Java的Socket
時遇到問題。我想從CLIENT發送username
到SERVER。Java Socket - 服務器沒有響應
在服務器上,我在檢查那裏不應該有任何其他用戶使用相同的username
。
用戶名存儲在HashMap。
我從服務器發送消息給客戶端,這取決於以下條件
如果用戶使用相同的名稱存在:
重複的用戶名。再次嘗試
如果用戶不存在:
OK
客戶端驗證我們得到這消息是OK與否。
問題是,當我從SERVER發送消息時,CLIENT沒有收到任何消息。
Client.java
System.out.println("Enter nickname: ");
while(response == null || !response.equals("OK")) {
message = br.readLine(); // reading from standard input
out.println(message);
out.flush();
response = in.readLine(); // here client is waiting for return message
System.out.println(response);
}
Server.java
username = input.readLine();
while(clientOutputs.containsKey(username)) {
output.write("Duplicated username. Try again: ");
output.flush();
username = input.readLine();
}
output.write("OK");
output.flush();
clientOutputs.put(username, output);
在服務器端,也許你應該爲你寫的字符串添加一個換行符,或者使用'PrintWriter'和它的'println'方法,就像你在客戶端上做的那樣。 – Berger
@Berger非常感謝你!我在服務器端使用了PrintWriter,但我不知道爲什麼我使用write函數而不是println。 – piotrb