现在让我们在这里我们使用了一种锁插槽接受secnario和包是5000个字节 与receivetimeout设置为一秒套接字选项收到超时
s.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);
int bytes_recevied = 0 ;
byte [] ReceiveBuffer = new byte[8192] ;
try
{
bytes_received = s.Receive(RecevieBuffer) ;
}
catch(SocketException e)
{
if(e.ErrorCode == 10060)
{
Array.Clear(ReceiveBuffer,0,ReceiveBuffer.Length);
}
}
现在我们secnario决定了4000个字节去了扔alreadys,套接字仍然阻塞,并在接收端有一些错误,现在在接收端,我们将通过捕获套接字来处理4000字节ecxecption
是否有任何保证,即发送端的套接字不会丢失仍然为的1000个字节发送套接字是否知道截断它们,如果他试图再次接收它不会被我们接收到的第一个字节wasent断开连接?
我在问的是: a)tcp是否有一些mecanisem告诉套接字处理其余的消息? b)是否有我们可以发送或接收的套接字标志,告诉缓冲区处理剩余的消息?
你的代码和你的大部分问题没有多大意义。可能是因为你误解TCP只提供一个流,并不能保证数据包的任何信息。 – CodesInChaos 2011-02-12 16:21:27