Socket中服务器端如何判断客户端已经断开连接?

xieyueqing 2008-05-07 09:36:05
我现在是通过异步接收数据函数中的异常来判断的。而且如果客户端是delhpi的话,不会出异常,而是会不停的触发回调函数。

好像客户端连接断开,就会触发异步接受数据的回调函数。

怎么样才能正确判断呢?

//异步接收数据的回调函数。
public static void OnRecieve(IAsyncResult IR)
{
try
{
Console.WriteLine("<SYS>进入接收...");
Socket RecSocket = (Socket)IR.AsyncState;

int isize = RecSocket.EndReceive(IR);
string msg = Encoding.ASCII.GetString(tmpbuff);
Console.WriteLine("<MSG>:" + msg);
RecSocket.Send(Encoding.ASCII.GetBytes("return:" + msg));
if ((isize == 0)) //针对Delhpi的断开连接 {
RecSocket.Shutdown(SocketShutdown.Both);
RecSocket.Disconnect(false);
}

tmpbuff = new byte[buffsize];

RecSocket.BeginReceive(tmpbuff, 0, tmpbuff.Length, SocketFlags.None, OnRecieve, RecSocket);
}
catch (SocketException er) //针对C#的断开连接
{
if (er.ErrorCode == 10054)
{
Console.WriteLine("<SYS>连接已中断!");
}
}
}
...全文
504 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieyueqing 2008-05-07
  • 打赏
  • 举报
回复
没人知道么???
ziseliuxingzh 2008-05-07
  • 打赏
  • 举报
回复
异常捕获,如果如果出现异常,认为断开

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧