2011-07-13 75 views
2

我需要發送錯誤槽TcpClient的列表與此代碼如何檢測斷開完成發送數據槽的TcpClient

private bool TryConn(out TcpClient cliente) 
{ 
    var client = new TcpClient(); 
    try 
    { 
     client.Connect(IpAddress, PortNumber); 
     cliente = client; 
     return true; 
    } 
    catch 
    { 
     cliente = null; 
     return false; 
    } 

} 
public void ProcesssRecovery() 
{ 
    //NonMassiveErrorerror= new NonMassiveError(); 
    TcpClient client; 
    //get error 
    IEnumerable<NonMassiveError> errorNotNotified = GetUncheckedNonMassiveError(); 

    //check if lista is not empty 
    if (errorNotNotified .Count() >0) 
    { 
     // check connection 
     if (TryConn(out client)) 
     { 
      foreach (NonMassiveError error in errorNotNotified) 
      {  // sending error<--how detect conn stops 
       SendMessage(error, client, "asin" , ""); 
       error.Save(); 
      } 

     } 

    } 
     //stop thread 10mins 
    else 
    { 
     Thread.Sleep(TimeSpan.FromMinutes(10)); 
    }   
} 

}

如何檢查,如果連接在foreach落下停止發送數據?

回答

0

你應該稍微等一下並閱讀你發送的數據的迴應。 如果服務器確認,那麼它可以(響應= 0),如果不停止發送。

0

SendMessage()是你自己的方法吧?檢查socket.Send()是否返回0字節。這意味着套接字已斷開連接。