这属于Linux内核2.6 TCP套接字。Linux TCP/IP针对套接字流的非阻塞发送...... TCP recv缓冲区会发生什么情况?
我发送大量的数据,说300 MB,与非阻塞发送给谁一次接收8 MB的另一端。
一个8 MB的接收后,“接收器”停止接收,因为它想执行其他任务,如错误处理。发送者会得到一个EWOULDBLOCK,但由于它是异步通信,发送者会尝试填充另一端的TCP recv缓冲区。
我的问题是:将有仍然在TCP recv的缓冲数据,即使在“发件人”有一个EWOULDBLOCK和“接收器”停止接收?同一个套接字用于错误处理,那么“接收方”必须在尝试重用现有套接字之前清除TCP recv缓冲区?
但它只会填满TCP recv缓冲区,只有部分8 MB会被发送。那么你怎么知道丢弃多少? – user224579 2009-09-08 02:22:07
至少就你解释你在做什么而言,你是不会知道的。套接字只是数据流。它们的唯一含义是你在应用程序级别协议,记录等方面对它们施加的影响。如果这是一个需要考虑的条件,那么你需要定义一些能够让你解决的条件。 – Duck 2009-09-08 02:49:50
我明白了,这是应用程序的责任。谢谢! – user224579 2009-09-08 02:59:31