現在讓我們在這裏我們使用了一種鎖插槽接受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