是丌可以这样做,在客户端断开之前,发一个自定义的命令比如“disConnect”给server,这样server就知道要她断开,然后从客户的列表中删除
解决方案 »
- 关于网页数据读取和发送的问题
- 数组问题
- 正则表达式(家乐福)
- C#如何连接DB Commander 2000 PRO数据库。
- 求教:请问各位老师--水晶报表问题(怎么样不让类似表格的框不出现)
- 有关 DataSet 的问题(WinForm)
- 我怎么不能用System.Management命名空间?
- 如何窗体打开?
- c#实现红黑树算法如何写
- 请问在哪里可以下载C#的编程软件。
- 再问一遍,要想取得自增值的ID是不是非要直接运行SqlCommand对象方法取得,好象用SqlDataAdapter的UpData方法获取不到返回参数?
- .net webservice 和 .net remoting 有什么区别!
//;
}
if(!socket.IsClosed){
int countReaded = socket.EndReceive(a);
if(countReaded > 0){
socket.AppendBuffer(buffer,countReaded);
}
else
{
callBack(SocketCallBackResult.SocketClosed,(long)param["readedCount"],null,tag);
}
ar 并不为空。
holdingSocket holding = (holdingSocket) ar.AsyncState;
Socket handler = holding.workSocket;
这两句都不出问题。
但这句却出了问题,并且所有的连接都出异常并断开了。
然后,可以使用自定义的协议来通知断开,但是当以外断开时,就必须使用try-catch来捕捉错误并处理意外断开的错误了(结束线程。)
还是那样,客户端意外或偶然断开后,服务器端还是会回调一次 public void ReadCallback(IAsyncResult ar)而在 int bytesRead = handler.EndReceive(ar); 这一句时 handler 因为是已经断掉的.而抛出异常
结果是把所有的连接都给断开了.郁闷啊.........