簡體   English   中英

C#Socket編程,關閉窗口

[英]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'語句,它可以決定代碼是否應該運行,但我不知道它應該是什么。 想法?

只需檢查客戶端是否已連接到服務器。 SocketTcpClient類都具有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM