我正在尝试为一个简单的服务器编写代码,该服务器从客户端接收消息。连接成功,但一旦服务器与客户端连接,消息就不会显示在屏幕上。从客户端关闭连接后,服务器一次性收到所有消息。
我需要逐行接收消息,因为每行需要单独和实时处理(我使用HMM进行驱动程序的动作识别)。
有人能告诉我我做错了什么吗?
非常感谢你。
public static void main(String args[]) {
ServerSocket my_server = null;
String received_message;
DataOutputStream output = null;
Socket socket_connected = null;
try {
my_server = new ServerSocket(9090);
}
catch (IOException excepcion) {
System.out.println(excepcion);
}
try {
socket_connected = my_server.accept();
BufferedReader entrada = null;
while (socket_connected.isConnected() == true){
entrada = new BufferedReader(new InputStreamReader(socket_connected.getInputStream()));
output = new DataOutputStream(socket_connected.getOutputStream());
System.out.println("Confirmando conexion al cliente....");
received_message = entrada.readLine();
System.out.println(received_message);
entrada.close();
output.close();
}
socket_connected.close();
}
catch (IOException excepcion) {
System.out.println(excepcion);
}
}
答案 0 :(得分:1)
客户端,您是否刷新输出流?
关闭连接时,所有剩余数据都会被刷新,但在此之前,只有在有足够的"等待"要发送的数据。
答案 1 :(得分:0)
我设法找到了解决方案,我想在此分享。
我的客户端是一个Visual Basic应用程序,我有一个Java服务器。客户端发送的消息没有End Of Line字符,因此entrada.readLine();将在显示消息之前等待消息已经结束的信号(从未发生过)。 解决方案是在客户端消息的末尾添加End Of Line字符,最后一切都很顺利。
感谢您的回答。