[英]Java socket server -> Only accepts one request then stops accepting?
我正在嘗試為我的項目編寫一個簡單的套接字服務器,但它只接受一個請求,然后不接受任何其他任何地方。
public void run() {
println("Socket server running...");
try {
sock = new ServerSocket(20424);
while(true) {
clientSocket = sock.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String data;
while((data = in.readLine()) != null) {
println("[SocketServer] " + data);
if(data.equalsIgnoreCase("COUNT(TRIGGERS)")) {
out.println(getTriggerCount());
}
}
out.println("endOfStream");
out.close();
in.close();
clientSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
它將接受一個請求並使用正確數量的數據進行響應,但之后無效。 這是我用來連接的客戶端:
public static void main(String[] args) {
try {
socket = new Socket("localhost", 20424);
out = new PrintWriter(socket.getOutputStream(),
true);
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
out.println("COUNT(TRIGGERS)");
String data;
while((data = in.readLine()) != null) {
System.out.println(data);
}
socket.close();
} catch (UnknownHostException e) {
System.out.println("Unknown host");
System.exit(1);
} catch (IOException e) {
System.out.println("No I/O");
System.exit(1);
}
}
一旦內部結束,它將接受下一個連接......
也許你想為自己的線程創建傳入連接的套接字處理程序,這樣你就可以同時處理多個連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.