【问题标题】:Problem with socket connection request套接字连接请求问题
【发布时间】:2011-04-02 00:45:59
【问题描述】:

我将套接字通信封装在一个 activex exe 中。

此套接字对象是从客户端应用程序创建的,并将向客户端提供事件通知。

当 ConnectionRequest 事件引发时,连接被接受,并通过 CONNECTED(在套接字对象中定义)事件通知客户端。 到目前为止一切正常,但在通过 Accept 方法接受上一个连接后,ConnectionRequest 再次以相同的 RequestId 引发。

当我尝试关闭套接字并重新接收请求时,会生成运行时错误 说“运行时错误 10038,描述符不是套接字”!

有人遇到过这个问题吗?请提出一些解决方法。

提前致谢。

PS:我使用的是 TCP 协议。

【问题讨论】:

    标签: sockets vb6


    【解决方案1】:

    我很确定 requestID 值是处于 listening 状态的套接字的套接字描述符,因此当您只有一个侦听器(即最常见)。

    这些是与流程相关的,因此您无法在流程之间有意义地传递它们。为此,您可能必须调用WSADuplicateSocket() 函数。我从来没有尝试过,所以你可以尝试一下——但我相信当 ConnectionRequest 处理程序退出而不接受请求时,Winsock 控件会发送拒绝。

    【讨论】:

    • requestID的类型是长按winsock接口定义的。
    • 是的,但事情比这要复杂一些。该值通常只在一个进程中有意义。阅读 MSDN 文章。
    猜你喜欢
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多