2010-04-14 73 views
0

我打电话给第三方API,它创建一个套接字,做一个连接,然后通过传递套接字永远阻塞来调用select API。退出阻塞选择呼叫!

我无法访问套接字。是否有某种方法可以让我的应用程序中的选择调用不会访问套接字?

我的平台是Windows。

+0

几个问题/说明: (1)在代码中调用'select'可以修改吗?我*认为*答案是“否”,但我想确认。 (2)假设前一个问题的答案是“否”,你可以让第三方api在你指定的多个套接字的'select'中等待吗? (3)从你的问题,我不清楚你是否使用两个第三方apis,一个创建(并连接到?)一个套接字,另一个等待一个或多个套接字,或者一个api创建,连接并调用'select'而不会将控制权返回给您。 – 2010-04-14 09:57:08

+0

第一个问题的答案是否定的。我只使用一个创建,连接和调用select的第三方API,但没有返回控制权给我。感谢您对这个问题的关注。 – Jay 2010-04-14 10:27:05

回答

1

除非您可以访问套接字或使用的选择集,否则通常无法执行此操作。

如果您可以访问套接字,请通过closesocket()关闭它。 如果您可以访问读取设置,请填写虚拟套接字,然后查看上一个点。

如果没有这些工作,你可以:

  • 确保这种情况发生在一个单独的线程,它可以在以后杀了(虽然这会造成一些相当明显的资源泄漏)
  • 尝试重写选择使用类似Detours(不推荐)
  • 承认失败。
+0

我同意Hasturkun。我还会添加通过假装成连接的另一端来发送阻塞套接字消息的可能性。 – 2010-04-14 09:52:17

+0

当我无法访问套接字时,如何向它发送一些消息?有没有办法?谢谢! – Jay 2010-04-14 10:28:02