看来以上的人对TCP以及网络编程还不是一般话的不了解。you guys make me laugh!
谁跟你讲的操作系统内部缓冲区满了,TCP就开始丢失数据了?一旦用户数据通过socket交给了TCP协议层,TCP将管理剩下的所有传输细节,包括缓冲区管理,超时重传,流量控制,等等等等。如果本地外出TCP缓冲区满,在socket层会限制用户提交更多的数据(要么通过阻塞,要么非阻塞返回一个wouldblock错误值),如果远端进入TCP缓冲区满,TCP内部的流量控制(窗口协议)会告知发送TCP层不要发送更多的数据。只要网络本身没有问题,使用TCP将不用担心任何“丢包”的情况,如果网络延迟或瘫痪(包括目的机处理缓慢),TCP的超时机制会最终RST掉当前的连接。