所谓的远程主机强迫关闭一个现有链接,我的理解是:客户端与服务端之中,有一个率先中断了已经建立的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` 块中 关闭 数据库 连接