我的想法是每个用户上线后,开启一个子线程,在子线程中开启一个udp socket等待接收数据包。
获取在线人数的一方在进行查询申请后,建立一个udp socket进行广播,广播后建立一个udp socket,在while中进行接收数据。其他用户收到这个数据包后,再建立一个udp socket发回给广播方。已达到统计人数的目的。
现在这个方法存在的问题是广播方的那个while循环不能够正常退出。假设局域网中特定端口上有3个用户打开了连接,广播方的while中会一直等待第四个用户发来的数据,不知道这个问题有没有好的解决办法?
------------------------------------------------------------------------------------------------------
我还有一个想法就是广播方通过不断地进行建立TCP连接的尝试确定在线人数,不过这个方法感觉在规模大的时候比较耗时。不知道这种方法怎么样呢?
------------------------------------------------------------------------------------------------------
或者是有其他什么好办法来实现吗?
获取在线人数的一方在进行查询申请后,建立一个udp socket进行广播,广播后建立一个udp socket,在while中进行接收数据。其他用户收到这个数据包后,再建立一个udp socket发回给广播方。已达到统计人数的目的。
现在这个方法存在的问题是广播方的那个while循环不能够正常退出。假设局域网中特定端口上有3个用户打开了连接,广播方的while中会一直等待第四个用户发来的数据,不知道这个问题有没有好的解决办法?
------------------------------------------------------------------------------------------------------
我还有一个想法就是广播方通过不断地进行建立TCP连接的尝试确定在线人数,不过这个方法感觉在规模大的时候比较耗时。不知道这种方法怎么样呢?
------------------------------------------------------------------------------------------------------
或者是有其他什么好办法来实现吗?
解决方案 »
- 请教一个反序列化的问题,谢谢
- 使用COM时编译时通过,DEBUG运行不了,RELEASE可以运行!
- 跪求一个http_post的函数,我自己写了一个,总是不稳定,请高手进来。
- 关于各函数数据传递的问题
- xp 两块网卡
- office多语言字符串资源在哪个文件?
- DAO编程需要包含哪些头文件?
- 如何在CMysystemView中引用CMysystemDoc中的函数
- 请问在ocx控件中如何编写只在运行时可用的属性,急!!!
- com服务器将一个32位dll的函数封装,但在idl文件中类不识别,error2025 2026
- keybd_event发出的wm_keydown消息会不会被PreTranslateMessage函数拦截
- Test *test = (Test *)(new char[sizeof(Test)+1024*100]);
PeekMessage检测到WM_CLOSE时break
使用setsockopt设置发送、接收超时
主线程:
想终止广播线程时PostThreadMessage WM_CLOSE