我有很多打印機,我試圖通過TCP連接來連接。我試圖驗證我的TcpClient仍然連接到更新GUI。我試圖寫入一個套接字,以確保它仍然連接。我沒有得到任何例外,即使拔掉電源線我嘗試了所有的建議,這裏MSDN_FourmC#TCPClient /套接字寫入不拋出異常
我收到預期的異常後,我嘗試檢查打印機狀態
psudo碼 客戶端具有的TcpClient先前已經連接
private bool FuntionPsudo(){
try{
if(client.Connected){
byte[] buf = new byte[1];
client.Client.Send(buf, 0,0);
client.GetStream().Write(buf,0,0);
if(client.Client.Receive(buf,SocketFlags.Peek)==0)
return false;
return true;
}
}
catch(Exception){
return false;
}
return false;
}
FuntionPsudo返回:
電纜拔出
FuntionPsudo返回:
FuntionPsudo返回:
檢查打印機狀態
FuntionPsudo回報:假
在此先感謝您的幫助,爲什麼這可能發生的和/或如何修復它
拔下電纜不會自動關閉現有連接,因爲該連接的任何一側都不關心/瞭解物理狀態。這就是超時的目的。 – admdrew
好的,但是當我寫入套接字時,它不應該拋出異常? – user2144406
除非連接/插座實際上已關閉。如果您手動關閉套接字,或者等待很長時間以使連接超時,您是否會遇到異常? – admdrew