Winsock TCP侦听器在成功执行closesocket()调用后保持LISTENING状态
Winsock TCP listener stays in LISTENING state after successful closesocket() call
我正在处理一个现有的DLL,其中创建了一个TCP侦听套接字,并设置为在失败时使用SO_REUSEADDR立即重新绑定到同一套接字。然而,目前存在一个问题,即即使在成功调用closesocket()之后,侦听器仍将处于LISTING状态;由于它没有输入TIME_WAIT,所以在重新创建套接字时,会在同一端口上创建一个新的侦听器。然后客户端无法连接到新的侦听器(大概是这样)。SO_LINGER设置为0秒。当插座关闭时,没有挂起的传输。最古老的插座似乎在大约十秒钟后关闭,而没有明显进入另一种状态。
在成功调用closesocket()之后,什么能让监听器保持在LISTING状态?
- 你关错了插座
- 您复制了句柄,却忘记关闭副本
- 其他人抢购一空
- 当其他事情发生故障时,您的故障代码会检测到侦听器的故障
- 你的听众在没有失败的情况下报告失败
- 您的故障模式会破坏状态,所以closesocket()会关闭其他东西
相关文章:
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 如何从Clojure调用C++程序,以使程序保持打开状态?
- DirectX 9 在重置调用之间保留状态
- 全局挂钩 DLL 仅在 C# 主窗口处于活动状态/前台时调用 C# 回调方法
- 我有一个CEdit盒子.当我禁用该框并在尝试调用 SetReadOnly 后立即将其禁用状态.这是为什么
- 保持 boost.process 在函数之外处于活动状态,该函数被调用
- 如何安全地防止在 Wininet 中调用状态回调函数
- 从状态内的自定义函数(不是操作)提升 MSM 调用process_event?
- 在cython调用之间保持数据帧的状态
- 类的堆分配对象是否在其作用域之后但在 C++ 中调用其析构函数之前处于活动状态
- 调用 ~Derived() 和 ~Base() 之间的对象状态
- CPP 建议更好的方法在没有开销/IO 调用的情况下进入静音状态
- 使用系统调用处理退出状态
- Easyhook:非托管挂钩,如何调用原始函数/更改返回状态
- JNI保留对对象的全局引用,并使用其他JNI方法访问它.在多个JNI调用中保持C++对象的活动状态
- 如何在单独的线程中调用方法并使用返回状态
- 状态:从CUDA库调用cusolverDdgeqrf时执行失败
- Winsock TCP侦听器在成功执行closesocket()调用后保持LISTENING状态
- AIX库调用以获取线程信息/状态
- 在来自C++应用程序的成功调用之间保留dll中的状态