所以,我正在写这个学校项目,应该是一个由客户端和服务器组成的基本聊天程序。我正在尝试处理服务器或正在关闭的客户端程序。
因此,当您在客户端窗口中按下大红色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);
}
它向服务器发送一条消息,通知它有人正在注销,因此它可以从用户列表中删除用户等。
服务器关闭时会出现问题,它会尝试向客户端发送消息,通知他们服务器已关闭,因此客户端可以通知用户然后关闭。
所以服务器的消息到了,客户端程序即将关闭,但上面的代码会尝试错误地通知服务器注销,但服务器此时已经关闭了,所以会有是一大堆错误信息。
我想我需要某种“如果'上面的过程中的语句可以决定代码是否应该运行,但我不知道它应该是什么。想法?
答案 0 :(得分:3)
只需检查客户端是否已连接到服务器。 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);
}