[英]C# Socket programming, closing windows
所以,我正在寫這個學校項目,應該是一個由客戶端和服務器組成的基本聊天程序。 我正在嘗試處理服務器或正在關閉的客戶端程序。
因此,當您在客戶端窗口中按下大紅色X時,會發生以下情況:
private void Window_Closing(object sender, CancelEventArgs e)
{
Data msgToSend = new Data();
msgToSend.cmdCommand = Command.Logout;
msgToSend.strName = LoginName;
byte[] b = msgToSend.ToByte();
ClientSocket.Send(b);
}
它向服務器發送一條消息,通知它有人正在注銷,因此它可以從用戶列表中刪除用戶等。
服務器關閉時會出現問題,它會嘗試向客戶端發送消息,通知他們服務器已關閉,因此客戶端可以通知用戶然后關閉。
所以服務器的消息到了,客戶端程序即將關閉,但上面的代碼會嘗試錯誤地通知服務器注銷,但服務器此時已經關閉,所以會有很多錯誤消息。
我想在上面的過程中我需要某種'if'語句,它可以決定代碼是否應該運行,但我不知道它應該是什么。 想法?
只需檢查客戶端是否已連接到服務器。 Socket
和TcpClient
類都具有Connected
屬性:
http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.connected%28v=vs.110%29.aspx http://msdn.microsoft.com/en-us/library /system.net.sockets.tcpclient.connected(v=vs.110).aspx
然后你可以這樣做:
if (client.Connected) {
Data msgToSend = new Data();
msgToSend.cmdCommand = Command.Logout;
msgToSend.strName = LoginName;
byte[] b = msgToSend.ToByte();
ClientSocket.Send(b);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.