UDP异步操作过程解决思路

UDP异步操作过程
我想通过异步通讯检测网关可通性,比如我想测试192.168.1.1 的可通性,如果通的情况还好,但是如果不通,等待时间需要很长时间,这是我最不想看到的,我想如果这个网关一定时间没有返回我就要放弃(一般几毫秒)
可是通过设置阻塞条件的时候,我设置阻塞时间为1ms,但是recvfrom要500ms才返回,已经远远超出了我的可以忍受范围,我想通过异步的方式进行调用,如果一段时间没有返回我就不管他了,请问该怎么做
异步 udp 通讯

------解决方案--------------------
建议用事件触发的,在 vc视频教程中看到过,异步的
------解决方案--------------------
设置socket的接收超时,美女
------解决方案--------------------
非阻塞是这个样子的:
#ifdef WIN32
    unsigned long ul = 1; 
    ioctlsocket(m_Socket, FIONBIO, &ul); 
#else
    int flags = fcntl(s, F_GETFL, 0); 
    return fcntl(m_Socket, F_SETFL, flags 
------解决方案--------------------
 O_NONBLOCK);
#endif

想要超时放弃,自己设个定时器或者用一个循环去检测
------解决方案--------------------
引用:
Quote: 引用:

非阻塞是这个样子的:
#ifdef WIN32
    unsigned long ul = 1; 
    ioctlsocket(m_Socket, FIONBIO, &ul); 
#else
    int flags = fcntl(s, F_GETFL, 0); 
    return fcntl(m_Socket, F_SETFL, flags 
------解决方案--------------------
 O_NONBLOCK);
#endif

想要超时放弃,自己设个定时器或者用一个循环去检测

对了,你对跨段广播有研究么?我的IP段在192.168.16*上,我想向192.168.0.*~192.168.255.*这些段发送广播怎么就发送不了呢?

没做过广播,我用过UDP只是在互联网上
------解决方案--------------------
楼主,请问你接受到得UDP数据,排序采取什么样的方法?