繁体   English   中英

Java 套接字客户端未检测到服务器消息

[英]Java socket client doesn't detect server messages

我正在尝试在远程主机上运行 Java 服务器套接字,它将定期向所有连接的客户端广播消息(由外部进程确定)。

服务器套接字定义为:

        ServerSocket serverSocket = (ServerSocket) ((ServerSocketFactory)ServerSocketFactory.getDefault()).createServerSocket(3050);

        while (true) {
            Socket socket = serverSocket.accept();
            remoteService.addSocket(socket);
        }

它将跟踪数组列表中的套接字连接。 每当需要发送广播时,将调用以下方法:

public void broadcastMessage(String message){
    for (Socket socket : remoteService.getSockets()) {
        System.out.println("Sending message: " + message);
        PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
        printWriter.write(message);
    }
}

在客户端,设置如下:

        Socket socket =  (Socket) ((SocketFactory) SocketFactory.getDefault()).createSocket(serverHost,portNum);

        BufferedReader socketBufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        while (true) {
            String message = socketBufferedReader.readLine();
            if (message != null && message != "") {
                System.out.println("Message received: " + message);
            };
        }

服务器正确打印“发送消息”字符串的次数与连接的客户端一样多,但没有任何客户端进程打印任何内容。 知道如何让客户端正确监听套接字输入流吗?

PrintWrite.println() 方法将打印它给出的字符串并终止该行。 在服务器端使用以下内容有效:

public void broadcastMessage(String message){
    for (Socket socket : remoteService.getSockets()) {
        System.out.println("Sending message: " + message);
        PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
        printWriter.println(message);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM