读取套接字中的缓冲区

时间:2011-07-29 04:26:37

标签: c sockets glibc

如果read()的返回值与缓冲区大小相同,我该如何阅读其余信息?如果再次调用read,它会读取下一个数据块,还是从头开始读取,还是未读入缓冲区的信息永久丢失?

1 个答案:

答案 0 :(得分:6)

在TCP(SOCK_STREAM)套接字上,您将获得下一个数据块。从TCP套接字读取类似于从文件读取。

在UDP(SOCK_DGRAM)数据报套接字上,如果您的缓冲区不足以使用整个数据报,则会丢失数据报的其余部分。后续读取将消耗到达的下一个数据报。