Java数据输入流

标签 java sockets endianness

客户端:

        out = new DataOutputStream(connection.getOutputStream());
        String process;
        System.out.println("Connecting to server on "+ host + " port " + port +" at " + timestamp);
        process = "Connection: "+host + ","+port+","+timestamp; 
        System.out.println("client len " + process.length());
        out.write(process.length());

打印: 客户端长度 55

服务器端:

       in = new DataInputStream(connection.getInputStream());
       while (true) {
            int len = in.readInt();
            System.out.println("Length of pkt: "+len);

打印:pkt 的长度:927166318

这是怎么回事?我试着写 0,它在服务器端打印了 3621743。我检查了其他一些网站,一些人在使用其他流时遇到了问题。我读到了大字节序与小字节序引起的问题,但我不确定这里的问题是什么,因为我使用的数据*流应该可以很好地相互配合。

最佳答案

如果你在一侧调用readInt(),你应该调用writeInt(int)在另一。改变这个

out.write(process.length());

out.writeInt(process.length());

来自 write(int) 的 Javadoc ,

Writes the specified byte (the low eight bits of the argument b) to the underlying output stream.

关于Java数据输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26308941/

相关文章:

java - 如何在满足条件后停止值事件监听器的监听

java - Android、Java 和 2d 绘图

c# - 为什么套接字的另一侧不关闭套接字? (关闭等待)?

c++ - socket select() 创建一个线程并且 close() 不结束线程

c++将二进制字符串从小端转换为大端(反转位)

c - 具有多个设备的板上的 Little 和 Big Endian 访问 - 嵌入式软件架构

java - Alpha channel 模糊

java - compareTo 方法的哪种用法更容易理解?

使用 TCP/IP 套接字检查有多少数据已传送到目的地

java - Java 语言规范中哪里定义了运行时字节序?