所谓的远程主机强迫关闭一个现有链接,我的理解是:客户端与服务端之中,有一个率先中断了已经建立的SOCKET,从而导致连接的另一端被强行关闭链接------毕竟你连接的另一端已经关闭了,那你还链接个毛啊。
具体问题具体分析。
—————————————————————————————————————————————————————
第二天补充:我的远程主机强迫关闭一个现有链接 问题出现的原因如下:上位机下位机建立连接后,上位机给下位机发送一个数据采集的命令后,下位机直接把连接的端口给复位了,即:下位机关闭了异常连接。
找到问题出现的原因:下位机等待连接的时间,或者是连接上之后等待上位机发送命令的时间稍微一长(比如20秒这个样子),下位机就会自动复位连接端口(用WIRESHARK抓的包)。
解决方案:没解决,只是让用户关闭软件重启一遍算了。毕竟我也搞得不耐烦了------谁还不是大爷咋地?!
—————————————————————————————————————————————————————
以下所讲并未直接解决远程主机强迫关闭一个现有链接的问题,只是阐述了此问题产生原因,以及一个应急补救办法(代价是软件的友好性,,很差)
所谓的远程主机强迫关闭一个现有链接,我的理解是:客户端与服务端之中,有一个率先中断了已经建立的SOCKET,从而导致连接的另一端被强行关闭链接------毕竟你连接的另一端已经关闭了,那你还链接个毛啊。具体问题具体分析。我所遇到的问题,或者说我的“远程主机强迫关闭一个现有链接”出现的位置是在一个TRY...CATCH()中捕获的,其实对程序整体而言没什么太大影响,所以我的做法是直接将CATCH中捕...
http://blog.sina.com.cn/s/blog_5f2833390100nked.html
关于客户端断开
连接
的时候,服务端会catch到
一个
socketException端口异常提示,无法从传输
连接
中读取数据:
远程
主机
强迫
关闭
了
一个
现有
的
连接
。。此时,如果按以下写法,服务器没法再接收到新的数据
public void
TCP
Start()
程序A,绑定192.168.100.1(本机地址)的8000端口,向192.168.100.1(本机地址)的9000端口发消息。
程序B,绑定192.168.100.1的9000端口,向192.168.100.1的8000端口发消息。
A和B均开始运行,可以互相发送消息(多线程或者单线程),运行正常!符合预期!
A运行,但B不运行,则A在ReceiveFr
HttpWebRequest http = (HttpWebRequest)WebRequest.Create(full_url);
HttpWebResponse hwr = (HttpWebResponse)http.GetResponse();
Stream s = hwr.GetResponseStream();
MemoryStream ms = new MemoryStream();...
在UDP通信过程中, 使用try...catch语句接受数据时,总是会出现
一个
错误:
System.Net.Sockets.SocketException (0x80004005):
远程
主机
强迫
关闭
了
一个
现有
的
连接
。
最初的最愚蠢的解决方法就是,在catch语句里不做任何动作,让监听端口函数继续运行。但这并非
一个
长久之计,后来在网
出错状况:
发送端发送一串字符,显示“成功发送了38字节”;
但接收端却在Receive()函数的时候检测到了SocketException,显示“
远程
主机
强迫
关闭
了
一个
现有
的
连接
。”
代码如下:
Socket clientSock = new Sock
// 设置
连接
字符串
string connectionString = "Data Source=服务器名或IP地址;Initial Catalog=数据库名;User ID=用户名;Password=密码";
// 创建
连接
对象
SqlConnection connection = new SqlConnection(connectionString);
// 打开数据库
连接
connection.Open();
// 执行 SQL 查询
SqlCommand command = new SqlCommand("SELECT * FROM 表名", connection);
SqlDataReader reader = command.ExecuteReader();
// 遍历查询结果
while (reader.Read())
int id = reader.GetInt32(0);
string name = reader.GetString(1);
// ...
//
关闭
查询结果读取器
reader.Close();
catch (Exception ex)
// 发生异常时进行处理
Console.WriteLine(ex.Message);
finally
//
关闭
连接
connection.Close();
在上面的代码中,我们首先创建了
一个
`SqlConnection` 对象,并设置了
连接
字符串。然后在 `try` 块中打开数据库
连接
,并执行了
一个
简单的 SQL 查询语句,并通过 `SqlDataReader` 对象遍历查询结果。最后在 `finally` 块中
关闭
数据库
连接
。