Java套接字服务器仅显示连接关闭后收到的消息

标签 java sockets tcp server message

我正在尝试为一个简单的服务器编写代码,该服务器从客户端接收消息。连接成功,但服务器与客户端连接后,屏幕上不会显示消息。当我从客户端关闭连接后,服务器一次性接收到所有消息。

我需要逐行接收消息,因为每一行都需要单独实时处理(我使用 HMM 进行驾驶员 Action 识别)。

有人可以告诉我我做错了什么吗?

非常感谢你。

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);
    }
}   

最佳答案

我设法找到了解决方案,我想在这里分享。

我的客户端是一个 Visual Basic 应用程序,我有一个 Java 服务器。客户端发送的消息没有行尾字符,因此 entrada.readLine();在显示消息之前会等待消息结束的信号(从未发生过)。 解决方案是在客户端消息末尾添加行结束字符,最终一切顺利。

感谢您的回答。

关于Java套接字服务器仅显示连接关闭后收到的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39368428/

相关文章:

javascript - 将模块从 Node.js 导入 React 应用程序

c - C 中的多线程服务器(线程丢失)

java - 默认情况下,Maven 不会将 src/test/java 中的 *.xml 文件复制到目标/测试类

java - LWUIT - 在主题中使用数据导致 java.lang.OutOfMemoryError

sockets - Nginx 找不到 Unicorn 的 unix 套接字文件(没有这样的文件或目录)

java - 随机数生成始终返回相同的值

c - 为什么抓包时指针不指向正确的包头?

java - 通过 Swing GUI 控制 Selenium

JSF 中的 Java Web 服务 URL

c++ - 关于滑动窗口 boost asio tcp async_write