C#socket通讯两个最经典错误解决方案
- 1、经典错误之 无法访问已释放的对象。 对象名:“System.Net.Sockets.Socket”
- (1)、问题现场

(2)、问题叙述
程序中的某个地方调用到了socket.close后,这个socket还被调用,就出爆出上面错误!
(3)、解决方案
使用下面一句:
if (stsend != null && stsend.Connected)
stsend != null :这一句在socket.close之后,会无效的,因为关闭socket连接时已经将其所有连接的资源都释放了;故要与Connected全用;
stsend.Connected:获取一个值,该值指示 Socket上次操作是Send还是Receive形式连接到远程主机,如果都不是,那就是断开了。
扩展说明:
所有非托管资源程序员必须能控制资源释放,诸如数据库连接,SOCKET连接等在使用后都应当显示关闭,如果是长连接,在程序退出时应当确保所有占用的连接都被关闭。
2、经典错误之 "远程主机强迫关闭了一个现有的连接。"
(1)问题现场

(2)、问题叙述
如下图,对于网络的经典问题,由于是server和client中的任意一方主动断开连接,导致弹出 “远程主机强迫关闭了一个现在连接”的异常。这种情况,会导致程序提示异常,无法继续往下执行。
(3)、解决方案
可以通过异常处理的方式,通过异常来提示网络不正常,从而跳出该程序分支,不至于因为异常问题程序瘫痪!
如下图,一Catch到这类System.Net.Sockets.SocketException异常(当然这里把它设为Exceptioin异常,抓取的范围更广),那么就用MessageBox给用户一个提示,然后从该分支退出就行了。

本篇文章引自:http://blog.chinaunix.net/uid-25498312-id-3321852.html
C#socket通讯两个最经典错误解决方案的更多相关文章
- Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...
- mysql 经典错误解决方案 :Incorrect string value 'xE6x95x85xE4xBAx8B...' for column
1.关闭当前服务器2.删除正在使用的数据库drop database 数据库名字;3.查看字符集, SHOW VARIABLES LIKE 'character_set_%'; 把所有latin1的都 ...
- 基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
今天我们来盘一盘Socket通讯和WebSocket协议在即时通讯的小应用——聊天. 理论大家估计都知道得差不多了,小编也通过查阅各种资料对理论知识进行了充电,发现好多demo似懂非懂,拷贝回来又运行 ...
- Protobuf实现Android Socket通讯开发教程
本节为您介绍Protobuf实现Android Socket通讯开发教程,因此,我们需要先了理一下protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式 ...
- 试解析Tomcat运行原理(一)--- socket通讯
关于这篇文章也确实筹划了很久,今天决定开篇写第一篇,说起tomcat首先很容易联想到IIS,因为我最开始使用的就是.net技术,我第一次使用asp写学生成绩管理系统后,很茫然如何让别人都能看到或者说使 ...
- Android笔记:Socket通讯常见问题
经验证的socket通讯问题 1.如果是模拟器和本机PC直接通讯,需要使用本机IP地址 而不是 10.0.2.2 如本机的静态地址为192.168.1.2 则直接使用该地址 2.接收和连接代码不能在 ...
- java socket通讯(一) 入门示例
一.入门 要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别 二.示例 首先新建了一个java工程,包括两个部分,客户端SocketClient ...
- Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯
Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...
- 利用BlazeDS的AMF3数据封装与Flash 进行Socket通讯
前几天看到了Adobe有个开源项目BlazeDS,里面提供了Java封装AMF3格式的方法.这个项目貌似主要是利用Flex来Remoting的,不过我们可以利用他来与Flash中的Socket通讯. ...
随机推荐
- JAVA-3-水仙花
public static void main(String[] args) { // TODO 自动生成的方法存根 int i = 100; while (i < 1000) { int a, ...
- strcmp和==比较
本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/cpp_strcmp.html #include <stdio.h> # ...
- oracle 界面分页
/** * */ package org.pan.util; import java.sql.ResultSet; import java.sql.SQLException; import java. ...
- Win7下Solr4.10.1和IK Analyzer中文分词
1.下载IK中文分词压缩包IK Analyzer 2012FF_hf1,并解压到D:\IK Analyzer 2012FF_hf1: 2.将D:\IK Analyzer 2012FF_hf1\IKAn ...
- 准备开发一个基于canvas的图表库,记录一些东西(一)
开源的图表库已经有很多了,这里从头写个自己的,主要还是 提高自己js的水平,增加复杂代码组织的经验 首先写一个画图的库,供以后画图表使用.经过2天的开发,算是能拿出点东西了,虽然功能还很弱,但是有了一 ...
- PreparedStatement 和 Statment区别
PreparedStatement vs Statment 1)语法不同:PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql 2)效率不同: Prepar ...
- 避免Block的循环引用
避免Block的循环引用 什么是循环引用,什么时候发生循环引用 1 循环引用就是当self 拥有一个block的时候,在block 又调用self的方法.形成你中有我,我中有你,谁都无法将谁释放的困局 ...
- z-index的最大值、最小值
浏览器 最大值 超过最大值后变成 最小值 小于最小值后变成 备注 IE6 2147483647 2147483647 -2147483648 -2147483648 IE7 2147483647 ...
- PHP 中的数组
PHP中的数组是指一个键/值对的集合.PHP中的数组是使用哈系表构建的,这意味着访问每一个值都会有一个平均的O(1)复杂度. $arr=array([key=>]value,....); 在这里 ...
- PHP Java
http://my.oschina.net/lajp/blog/5121 http://blog.163.com/lijianwei_123/blog/static/18489289120115244 ...