![UDP 在数据报中发送两个字符串](https://linux22.com/image/52290/UDP%20%E5%9C%A8%E6%95%B0%E6%8D%AE%E6%8A%A5%E4%B8%AD%E5%8F%91%E9%80%81%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我想知道是否可以在 UDP 数据包的一个数据报中发送两个字符串。假设我的字符串 1 的文本为:unix,字符串 2 的文本为:linux。我不想合并字符串,但在传输时将它们分开
这是我在服务器 unix 上成功读取的工作代码
String name1 = "unix";
String name2 = "linux";
toSend = name1.getBytes();
DatagramPacket packSend = new DatagramPacket (toSend, toSend.length, ipConn, 9876);
connection.send(packSend);
两个创建 2 个单独的数据报包并分别发送数据是否明智?
答案1
您必须以某种方式序列化数据,要么使用通用格式(xml、json、uuencode,...),要么使用字符串中可能不会出现的任何分隔符(换行符,...),然后简单地拆分那个字符串。
如果您单独发送它们,请注意其中一个数据包可能会丢失,或者以不同的顺序接收,等等。因此,如果这些数据完全相关,那么在单个数据包中发送它就非常有意义。
答案2
如果您想将它们分开,则需要两个数据包,但更有效的方法是在单个数据包内传输它们,然后在接收器中拆分数据包。