我在一个activex exe中封装了一个套接字通信。
此套接字对象是从客户端应用程序创建的,并将向客户端提供事件通知。
当引发ConnectionRequest事件时,将接受连接,并通过CONNECTED(在套接字对象中定义)事件通知客户端。 到目前为止一切正常,但在通过Accept方法接受上一个连接后,再次使用SAME RequestId引发ConnectionRequest。
当我尝试关闭套接字并重新获取请求时,会生成运行时错误 说“运行时错误10038,描述符不是套接字”!
有人遇到过这个问题吗?请提出一些解决方法。
提前致谢。
PS:我正在使用TCP协议。
答案 0 :(得分:0)
我非常确定requestID
值是侦听状态下套接字的套接字描述符,所以当你只有一个监听器时它不会改变是有意义的(这是最常见的。)
这些是与流程相关的,因此您无法在流程之间有意义地传递它们。要实现此目的,您可能需要调用WSADuplicateSocket()函数。我从来没有试过这个,所以你可能会尝试尝试 - 但我相信当ConnectionRequest处理程序退出而不接受请求时,Winsock控件会发送拒绝。