Java 如何在建立 Socket 通信后主动向 C#客户端发送信息

使用Java服务器与C#客户端成功建立套接字通信后,Java服务器如何主动向C#客户端发送消息?我只能在成功建立的那一刻向客户发送信息,但这不是我想要的。

项目启动时将开始创建套接字连接,但在建立之后,我无法自己向客户端发送信息。

-----这是负责建立套接字通信的代码。

public void openSocket() throws IOException {
        Socket socket = null;
        try {
            ServerSocket serverSocket = new ServerSocket(5656);
            log.info("server msg : UnitySocket server start {port : [5656]}");
            socket = serverSocket.accept();
            log.info("server msg : socket msg [client send !]");
            inputStream = new BufferedInputStream(socket.getInputStream());
            byte[] out_massage = new byte[messageLengthBytes];
            inputStream.read(out_massage);
            log.info("server msg : client msg is [ "+(new String(out_massage,"utf-8")));
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write(socket_massage.getBytes()); // socket_massage = "welcome_send_server_!"
        } catch (IOException e) { e.printStackTrace(); }finally {
            if(socket != null){ socket.close(); }
            socket = null;
        }

这是要发送给客户端的数据

public Boolean askMoveUp(String address, String project,
                             String name, String massage,
                             String startTime, String endTime, String token) throws IOException {
        StringBuffer stringBuffer = new StringBuffer();
        SocketMassage socketMassage = new SocketMassage();
        String msg;

        stringBuffer.append(address).append("_");
        stringBuffer.append(project).append("_");
        stringBuffer.append(name).append("_");
        stringBuffer.append(massage).append("_");
        stringBuffer.append(startTime);
        msg = stringBuffer.toString();

        socketMassage.setMsg(msg);

        return true;

    }

我想要做的是askMoveUp()方法中的msg数据。如何在openSocket()方法中像socket_massage一样发送给客户端?当项目启动时,socket_massage中的数据被发送到客户端,但msg是如何发送的?希望大家能给我一个帮助,谢谢!

1个回答

用netty可以实现server向client push消息

u012737673
明教一百零八代觉主 主要是jdk自带的socket通信是阻塞的,且在应用时很多地方都需要我们自己去实现。而netty是对java nio进行了封装,降低了我们使用的复杂度的同时,还对一些通用能力做了抽象,如编码、解码等等,性能好,使用简单。希望能帮到你!
6 个月之前 回复
qq_40962370
苍之弦 必须要有使用 netty 么? 难道服务端和客户端建立socket 连接的意义就只是在项目启动的时候双方互相发送一条信息而已?
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问