读取套接字中的缓冲区

Siy*_*Ren 0 c sockets glibc

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

sel*_*bie 6

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

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