繁体   English   中英

从套接字读取字节

[英]Read bytes from socket

我想读取服务器写入套接字的确切字节数(精确长度)。 例如,如果服务器写“ Hello”,下一次服务器写(“ world”)。 因此,我需要将这两个写入捕获为来自客户端套接字的两个读取。 我已经实现了以下服务器和客户端,以演示我的问题。 在该示例中,输出类似于以下内容

1234 ... 89 90 ........ 1034 1035 ...... 2004

我期望的是1

2

3

2004年

我该如何做到这一点。

//server
 ServerSocket server = new ServerSocket(9999);
        Socket s =server.accept();
        InputStream stream = s.getInputStream();
        byte[] by = new byte[1024];

        while(true){
            stream.read(by);
            String received = new String(by, 0, by.length, "ISO8859_1");
            System.out.println(received);
        }


//client
            Socket s = new Socket("localhost", 9999);
            OutputStream out =s.getOutputStream();
            int i =0;
            while(true){
                i++;
                byte[] msg=Integer.toString(i).getBytes();
                out.write(msg);
            }

可以请一个人帮我做这个吗..

您不能直接使用TCP。 TCP是一种流协议,它没有消息。

您需要在此之上构建自己的“协议”。 最简单的方法是先写下一条消息将包含的字节数,然后写消息。

在客户端,您首先要读取消息大小,然后读取整个消息。

暂无
暂无

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

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