首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何中断socket.ReceiveFrom呼叫?

如何中断socket.ReceiveFrom呼叫?
EN

Stack Overflow用户
提问于 2009-07-20 21:28:37
回答 2查看 3.6K关注 0票数 1

我有一个udp客户端正在监听多播消息。当它收到消息时,消息将被解析,客户端将继续侦听。如果应用程序在socket.ReceiveFrom方法阻塞时被关闭,如何中断此进程并继续?

我让套接字在另一个线程上运行,我尝试向该线程发出一个中断,然后再连接,但是该中断无法工作,除非收到消息,否则socket.ReceiveFrom永远不会返回。

我还尝试在套接字上设置超时,但这并不理想,因为它会在超时时生成异常,而且由于我一直在侦听,所以我将生成大量超时,捕捉它们,然后再继续侦听。

我能在这里试试什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-20 21:36:05

找到了,我可以使套接字在被阻塞的线程之外可用,并可以调用一个socket.Close。这会中断并抛出一个SocketException。看起来还是有点脏,但它能把工作做完。

有人有更好的方法吗?

票数 2
EN

Stack Overflow用户

发布于 2009-11-27 22:03:00

我不是插槽专家,但还是可以尝试。

使用以下两种方法的组合可以形成一个非阻塞的套接字。

1)使用select函数与超时一起等待特定的套接字。超时后,检查是否还想在该套接字上等待。

( 2)使用O_NONBLOCK使您从非阻塞呼叫中恢复。http://www.kegel.com/dkftpbench/nonblocking.html

使用上面的链接来学习如何从非阻塞中重新计算.

搜索select。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1156058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档