标签: c sockets glibc
如果read()的返回值与缓冲区大小相同,我该如何阅读其余信息?如果再次调用read,它会读取下一个数据块,还是从头开始读取,还是未读入缓冲区的信息永久丢失?
答案 0 :(得分:6)
在TCP(SOCK_STREAM)套接字上,您将获得下一个数据块。从TCP套接字读取类似于从文件读取。
在UDP(SOCK_DGRAM)数据报套接字上,如果您的缓冲区不足以使用整个数据报,则会丢失数据报的其余部分。后续读取将消耗到达的下一个数据报。