UDP 非阻塞问题

宇宙379 2011-09-14 02:08:29
本人用VC 6.0做个UDP客户端,用的是MFC(不是WinAPI),接收服务端发送的数据,当没有数据时候,发现阻塞了。
程序关不掉,用任务管理器关几次才关掉。请问怎么解决这个问题??
查了一下,用WinAPI的可以设置超时时间。但是我用的MFC的CSocket类啊。
谢谢。。。
...全文
496 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liwei3290 2011-09-16
  • 打赏
  • 举报
回复
我有代码 联系QQ 329044941
「已注销」 2011-09-14
  • 打赏
  • 举报
回复
线程,非阻塞,Timer。。。
dfasri 2011-09-14
  • 打赏
  • 举报
回复
....你开个定时器, 点击之后开始接收, 那不是等于直接锁死客户端了么...定时器不是线程来的.
你不用线程就改改代码, 把SOCKET设置为非阻塞, 然后用定时器来定时查询有没有数据吧.
其实写个线程很简单的, 还是写线程吧. 或者采用异步SOCKET.
Ack_001 2011-09-14
  • 打赏
  • 举报
回复
用异步I/O吧!
比如:事件模型、select模型...这里不详细说明了
网上有很多这方面的资料
zhanshen2891 2011-09-14
  • 打赏
  • 举报
回复
MFC也有相应的设置函数

另外,你这种情况要么改为异步的,要么改为多线程的
宇宙379 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dfasri 的回复:]
你有没有开单独的线程来接收数据的? 有的话, 应该你在主线程里面closesocket之后, 肯定会立刻返回错误的.
[/Quote]
没有开单独线程,不熟多线程哦。我直接点击连接按钮进入一个定时器,在里面接收数据,处理并显示
dfasri 2011-09-14
  • 打赏
  • 举报
回复
你有没有开单独的线程来接收数据的? 有的话, 应该你在主线程里面closesocket之后, 肯定会立刻返回错误的.

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧