新人刚刚接触网络,写了一个极其简单的socket程序,就是TCP的一个服务端和客户端。当服务端和客户端都遵循写一条---读一条---写一条---读一条的时候没有问题,而当服务端只负责读,而客户端只负责写的时候,很容易产生服务端一次性读出n条写入的数据的情况。我试了一下,在客户端每写入一条数据后加入Sleep(500)可以解决这个问题,不过如果不人为的产生延迟的话,有什么办法解决这样的问题呢?难道把'\0'也一起传递然后在服务器端分割吗?

其实这个问题有点类似赵先生刚刚跟我说的一个陷阱:

send(人多)send(病少)send(财富)

recv(人多病)recv(少财富)

求指点!


1个回答

send(人多)send(病少)send(财富)

recv(人多病)recv(少财富)

TCP可靠字节流, 1次read+N次拆包。