从UDP Socket读取整个消息

时间:2011-01-27 20:47:09

标签: sockets unix bsd darwin

我通过UDP套接字发送数据,并在read()的循环中接收数据。 输入数据如下所示:

String 1
String 2
String 3
....

我用send()写出数据,每个字符串彼此相继(在循环中)。 如何确保我能够以正确的方式重建接收端的数据(因为我把字符串放入)?

接收到的数据可以拆分到行的中间位置,如下所示:

Packet 0: Stri
Packet 1: ng 1
Packet 2: String 2 St
Packet 3: ring 3
...

我是否必须引入自定义的END OF MESSAGE字节序列?因为EOF在这里无济于事。

我需要能够判断一个包是否已损坏,以及属于一起的数据块的开始和结束位置,因为我从S开始发送它们并以Number结束!我不能使用TCP,因为我需要广播/多播支持。

1 个答案:

答案 0 :(得分:1)

如果您希望所有邮件到达,并按照发送的相同顺序,并且有“消息结束”指示,那么TCP可能更好: - )

(TCP完全开箱即用。)