社区
网络及通讯开发
帖子详情
recvfrom 函数死机
orangeo
2011-12-08 10:08:02
当对方未发数据,而调用if(recvfrom( socket,buffer,sizeof(buffer),0, (struct sockaddr* )&from,&from)!=SOCKERT_ERROR)时,程序就死在那不动了,鼠标拖都拖不动了,直到对方发数据过来。请教各位大侠,有何方法不让它死在那。
...全文
625
10
打赏
收藏
recvfrom 函数死机
当对方未发数据,而调用if(recvfrom( socket,buffer,sizeof(buffer),0, (struct sockaddr* )&from,&from)!=SOCKERT_ERROR)时,程序就死在那不动了,鼠标拖都拖不动了,直到对方发数据过来。请教各位大侠,有何方法不让它死在那。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
我不懂电脑
2011-12-12
打赏
举报
回复
可以用多线程避免阻塞
cgl_lgs
2011-12-08
打赏
举报
回复
非阻塞网络程序与阻塞一点儿也不一样,如果楼主真想做,那还是先看看书再说吧,这东西Unix网络编程是用好几章讲的,我自认为我没那个本事能精练成一个帖子说清楚:)
如果改用多线程,那就把这些非界面的东西单独写出去,然后写一个类继承TThread并实现Run:)最后实例化这个类就行了:)
orangeo
2011-12-08
打赏
举报
回复
int iMode = 1; //0:阻塞
ioctlsocket(socketc,FIONBIO, (u_long FAR*) &iMode);//非阻塞设置
加了这两句后,程序是不死了,可也不发送读取数据了。我的用是BCB6,,windows XP
程序要怎么大变样呢,单线程又该怎么做呢?
cgl_lgs
2011-12-08
打赏
举报
回复
非阻塞需要让程序做大变样,而不是简单地设置完事儿,否则程序会乱的:)
zzbinfo
2011-12-08
打赏
举报
回复
http://www.cnblogs.com/ahuo/archive/2008/01/09/1031638.html
zzbinfo
2011-12-08
打赏
举报
回复
由于我不知道你的编译环境和系统环境,你可以尝试用google来解决
orangeo
2011-12-08
打赏
举报
回复
怎么设置成 非阻塞?
cgl_lgs
2011-12-08
打赏
举报
回复
如果机器性能还行,理论上来说不应该死掉,当然窗体肯定是没反应了。要想有反应就单开线程做收发。
如果想改动更大些,那也可以改用非阻塞:)
zzbinfo
2011-12-08
打赏
举报
回复
你的socket设置的是阻塞模式吧,设置成非阻塞模式
非阻塞
recv
from的设置
本文探讨了使用UDP阻塞模式时如何处理网络丢包导致的
recv
from阻塞问题,介绍了通过设置非阻塞模式及利用select
函数
实现超时返回的方法。
Socket 阻塞
本文详细介绍了如何在UDP通信中使用非阻塞模式,包括设置非阻塞模式的ioctlsocket
函数
,以及如何通过select
函数
设定连接超时和接收超时,避免因网络问题导致的线程阻塞。
比特彗星下载慢怎么办?7个参数调优让BT下载速度拉满
本文详细介绍了多种TCP和UDP端口扫描技术,包括TCP ACK、RPC、Connect、SYN、FIN、Reverse Ident、Xmas Tree、Null扫描以及UDP ICMP端口不可达和
recv
from()与write()扫描等。此外还提及了一些特殊的扫描方式,如分片扫描和FTP跳转扫描。
阿超开发底层WINSOCK API:select的问题
本文介绍了如何利用select
函数
实现IO复用,通过设置fd_set并调用select来监测多个socket的状态变化,包括读就绪、写就绪及异常状态等,并提供了具体的代码示例。
UDP
本文深入解析UDP和TCP的差异,包括客户端与服务器的工作模式、UDP的C-S对应关系及使用流程,探讨UDPConnect的用途与细节,以及特殊地址如127.0.0.1和INADDR_ANY的应用。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章