java - 服务器未正确读取发送的 UDP 数据包

标签 java udp

我正在从客户端向服务器发送两个数据包。我遇到的问题是,在服务器上读取的数据使两个字符串对于发送的最长字符串具有相同的长度。例如:

如果字符串 1 为:1234
字符串 2 为:abcdefghi

服务器会读取

1234efghi
abcdefghi

它应该只显示

1234
abcdefghi

我的代码是:

byte[] toSendUser = new byte[1024];
byte[] toSendPass = new byte[1024];

String name = "1234";
String password = "abcdefghi"; 

    toSendUser = name.getBytes();
        toSendPass = password.getBytes();
        DatagramPacket packSend = new DatagramPacket (toSendUser, toSendUser.length, ipConn, 9876); 
        connection.send(packSend);

        DatagramPacket packSendtwo = new DatagramPacket (toSendPass, toSendPass.length, ipConn, 9876); 
        connection.send(packSendtwo);

这可能是服务器问题还是我的客户端代码错误?

最佳答案

Java 中的

DatagramPackets 不断缩小到迄今为止收到的最小数据包的大小。您必须为每个 receive() 创建一个新的长度,,或者至少每次在下一个 receive() 之前重置长度。

关于java - 服务器未正确读取发送的 UDP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22751659/

相关文章:

java - 为什么将 float 除以整数返回 0.0?

java - 如何在MySQL中存储时间

java - 是否可以在不使用外部库的情况下在 Java 中即时编译类?

c - 使用 C 中的 UDP 套接字将结构从客户端传递到服务器

go - 对 SNMP 消息进行编码并从代理读取响应

java - HashMap 和 ArrayList 在迭代/循环时添加

java - 如何在 Java 中创建类型安全的泛型数组?

c# - 发送UDP广播,接收多条消息

tcp - TTL 字段和 IP 校验和

c - 有没有办法减少套接字发送缓冲区大小的最小下限?