[英]Usage of read in socket programming
在使用C编程中读取的阻塞功能时,有什么方法可以区分有效载荷与不同数据包吗? 我正在从TCP客户端以数据包的形式发送每个消息,当我在TCP服务器中读取(使用读取功能)它时,我将所有消息都放在缓冲区中,而两者之间没有任何分隔符。
TCP是面向流的,这意味着没有可以将它们分开的包,因此您必须实现自己的协议,例如,可以在发送每个包之前发送4字节的报头数据,并在接收器中告诉接收器下一个包的大小。接收端,您应该始终读取4字节的标头(标识下一个数据包的大小),并使用标头中指定的大小进行阻塞读取。
另一种选择是使用固定大小的数据包,因此每次您都必须从TCP缓冲区读取固定大小的数据包时。
不同于TCP,UDP可以根据需要面向数据包。 在UDP数据包中,接收到的数据包的大小与已发送的大小相同,并且不会发生其他任何缓冲或串联,但是它不可靠。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.