C# 套接字编程,关闭窗口

本文关键字:窗口 套接字 编程 | 更新日期: 2023-09-27 18:32:22

所以,我正在编写这个学校项目,它应该是一些由客户端和服务器组成的基本聊天程序。我正在尝试处理正在关闭的服务器或客户端程序。

因此,当您在客户端窗口中按红色的大 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"语句来决定是否应该运行代码,但我不知道它应该是什么。想法?

C# 套接字编程,关闭窗口

只需检查客户端是否已连接到服务器。 Socket类和TcpClient类都具有Connected属性:

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.connected%28v=vs.110%29.aspxhttp://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);
 }