关于网络数据接收后, 如何确定其边界?
偶还是菜鸟, 对这个问题一直不明白, 参考了好几本这方面的书, 都说的含糊, 所以只好来这里问了.
谢谢各位朋友!
是这样的:
服务器端A
客户端B
A有两组数据,
char a[10]="123456789";
char b[10]="abcdefghi";
A要把这两组数据发到B
以下是我从一本参考书中抄出来的:
(当服务器A调用send后) 如果协议还没有开始发送缓冲区中的数据,或者缓冲区中没有数据, 那么send就比较缓冲区的剩余空间大小和待发数据长度len, 如果......, 如果len小于或等于缓冲区的剩余空间的大小, send 就把待发数据copy到剩余空间里去......
问题是:
如果发送缓冲区大小为 100 字节, 服务器A send 数据a后,立即send数据b, 按照上面所说, 数据a填到缓冲区后,缓冲区还剩下90字节, 于是数据b也会被填到缓冲区里, 接着, 这两组数据a b会被协议当作一个数据包发出去.
这样的话, 客户端B在收到这个包后, 怎么知道这个包中是有一组还是两组数据? 怎么确定两组数据的边界?
另外, 哪位朋友有send sendto, recv recvfrom 这四个函数的详细讲解吗?
望不吝告知.
谢谢!