TCP连接 - 服务器仅在关闭套接字后发送消息

Iva*_*ire 3 java sockets multithreading tcp

我试图让客户端向服务器发送请求并在保持连接的同时收到响应.

如果我关闭套接字:

//server side
outToClient.writeBytes("Message to send");
connectionSocket.close();

//client side
serverResponse = inFromServer.readLine(); 
System.out.println("FROM SERVER: " + serverResponse);
Run Code Online (Sandbox Code Playgroud)

客户端输出

FROM SERVER:要发送的消息

之后,显然连接丢失了.

如果我不关闭套接字:

//server side
outToClient.writeBytes("Message to send");

//client side
serverResponse = inFromServer.readLine(); 
System.out.println("FROM SERVER: " + serverResponse);
Run Code Online (Sandbox Code Playgroud)

客户端没有输出.服务器从不发送消息,或者客户端从未接收消息.

有人知道这可能发生的原因吗?客户端使用线程来接收消息,使用线程来发送消息.客户端套接字在主客户端线程中创建,因此接收方和发送方线程使用当前套接字进行通信.

提前致谢.

Jon*_*oni 9

如果客户端希望读取一行,则服务器应该写一行.一行由一个\n字符终止.

可能还需要刷新您用于将数据发送到客户端的流:

outToClient.writeBytes("Message to send\n");
outToClient.flush();
Run Code Online (Sandbox Code Playgroud)

没有看到代码,很难说是否需要刷新.