1: 有兩個地方必須做異常處理,異常類型為IOException 伺服器讀客戶端發來的信息時: LeafTCPClient client = (LeafTCPClient)ar.AsyncState; try { if (client.NetWork.Connected) { NetworkStre ...
1: 有兩個地方必須做異常處理,異常類型為IOException
伺服器讀客戶端發來的信息時:
LeafTCPClient client = (LeafTCPClient)ar.AsyncState;
try
{
if (client.NetWork.Connected)
{
NetworkStream ns = client.NetWork.GetStream();
byte[] recdata = new byte[ns.EndRead(ar)];//遠程異常關閉時,執行完這句話後發生IOException異常
......
}
catch(IOException ex)
{
MessageBox.Show(ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
遠程客戶端異常斷開時(比如斷電),伺服器正在讀客戶端發來的信息,若無異常處理,則會如下
伺服器向客戶端寫數據時,如果此時客戶端已經異常斷開,則
2如何知曉遠程連接的客戶端突然斷開,比如客戶端突然斷電斷網
(1)心跳包,保持客戶端與伺服器的數據交互
(2)向客戶端發送數據,客戶端如果是斷開連接的話,則會發生IOException,則在異常中釋放該TCPClient,釋放資源。