zoukankan      html  css  js  c++  java
  • Delphi 通信报Asynchronous socket error 10053错误的一个解决方法

      在使用Delphi中的TClientSocket和TServerSocket进行通信编程时,当使用TClientSocket这方的客户端使用TClientSocket.close断开连接并退出程序时,使用TServerSocket这方的服务端有时会报‘’Asynchronous socket error 10053‘这个错误,查阅了这个错误说明:Software caused connection abort.(因软件原因导致连接终止)。这个原因说明很鸡肋,因为你还是无法确定到底是哪个地方出现了问题。

      实际上出现这个错误很大的原因是没有客户端和服务端的连接没有断开就直接将TClientSocket给free掉造成的,在这里有两种解决方法(其实就是一种,只不过解决的地方不同而已,都是将连接断开)

    一:在调用TClientSocket的Close函数之前调用TClientSocket.Socket.Close将连接断开,但这也存在另一个问题,就是还存在未接收完全的数据,此时服务端仍然会报Asynchronous socket error 10053错误,因此在调用TClientSocket.Socket.Close之前可再调用一次TClientSocket.Socket.ReceiveText将服务端发送的数据接收完全

    二:在服务端的OnClientError事件中添加如下代码:

    case ErrorCode of
            10053: Socket.Close;
                    end;

    ErrorCode := 0;

    将连接断开,并设置ErrorCode为0,如果不设置,虽然连接断开,但错误码仍然是10053,仍然会弹窗报Asynchronous socket error 10053。

  • 相关阅读:
    C++构造与析构 yongmou
    坏习惯 yongmou
    Python 字符串方法
    python 列表推导式轻量级循环
    python 循环遍历字典元素
    python 短路逻辑和条件表达式
    python 迭代器
    一些关于面向对象设计的思考
    python map内建函数
    Python 列表
  • 原文地址:https://www.cnblogs.com/760044827qq/p/3921425.html
Copyright © 2011-2022 走看看