我正在尝试为我的项目编写一个简单的套接字服务器,但它只接受一个请求,然后从任何地方都不接受任何其他内容。
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);
}
}
答案 0 :(得分:2)
一旦内部结束,它将接受下一个连接...
也许您想为使用自己的线程的传入连接创建套接字处理程序,因此您可以同时处理多个连接。