远程主机强迫关闭了一个现有的连接 没有看你的代码。通讯系统是跨进程的系统设计,在表现层去try...catch是非常正确的。对于这类问题完全可以在catch中解决,就好像internet网络时通时断一样,你需要在业务逻辑上习惯并且应对,而不需要把这这类一场作为一个编程bug处理。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://stackoverflow.com/questions/3389401/c-sharp-an-existing-connection-was-forcibly-closed-by-the-remote-host-socket-pr 而不需要把这这类异常作为一个编程bug处理运行时(而非可以测试时)当对方意外断开,那么关闭本地的连接就行了。不需要当作bug处理。 2种方法,一种是在捕获异常里面解析异常代码(10054),这种情况就是客户端关闭程序等,你只要进行服务器端的扫尾工作(释放资源等);另外一种复杂点,通过命令包双方来解析,客户端在断开连接前,先发送断开命令包(或者Logout包)。服务器端解析命令包,如果是这种包,就不再调用下一轮的 BeginReceive。。 错误在这 int readbyte = hander.EndReceive(ar);我放在try里面了为什么服务器端还崩溃呢? 肯定崩啊,你catch 最后不是又 throw 了 catch (Exception Err) { throw Err; }这不是吗 对啊,你在catch里面 throw Err;那么就肯定抛到最外层,如果一直没有其他的catch,被运行时扑捉到,就是程序崩溃了 你这是socket tcp/ip 通信,出现这种情况是属正常现象,socket一但连接,客、服务端都有一个端口处于监听模式,一但一方断开,别一方马上做出响应,同样抛出异常。需要注意以下几点:1、客户端在退出时需要将socket.close();2、客、服务端都需要在接收接收套接字代码块中加入try catch 并在finally将socket.close(); [c#]关闭本窗体、向指定窗体传两个值或者1个对象 急!!!如何在一个解决方案中引用控件?? 保存文件提示:偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处的元素数量 希望高手指点迷津: 关于C#和C#.net在实际工作中的应用!! 在数据数中接收到的十六进制数,请问有没有具体方法可以处理?? 安装msde2000的时候出现的问题 分 用英文写的一个c#开发类的要求,请哪位帮忙翻译成中文 大家看一下能否实现这样的接口继承?? 有关RichTextBox支持表格的问题 关于重载运算符的疑问 comboBox添加选项时如何不添加重复项
int readbyte = hander.EndReceive(ar);我放在try里面了
为什么服务器端还崩溃呢?
{
throw Err;
}
这不是吗
那么就肯定抛到最外层,如果一直没有其他的catch,被运行时扑捉到,就是程序崩溃了
需要注意以下几点:
1、客户端在退出时需要将socket.close();
2、客、服务端都需要在接收接收套接字代码块中加入try catch 并在finally将socket.close();