学习WIN32 API - 一个简短的UDP服务器类
发布时间
阅读量:
阅读量
近期完成的一个项目采用了基础的UDP协议进行通信,在为了提高访问效率的情况下被封装成了一个简单的UDP服务器类。
1 基本思路
在现代网络通信程序设计中, 最具挑战性的部分莫过于对I/O操作的处理。
多线程程序必须得考虑同步的问题。主线程需通过可靠地配置一个变量来告知UDP监听线程已退出系统。为了避免监听线程中的recvfrom()长时间阻塞无法退出进程,主进程采用了关闭套接字的方式,迫使 recvfrom()函数及时返回给主进程。(此外,还有其他可使 recvfrom() 退出的方法,例如发送专用UDP数据包)
另一类用户需注意的是,在主线任务中调用回调函数可能会引发性能问题。为了避免非主界面(UI)主线程直接更新主界面(UI)带来的潜在问题,在处理窗口相关的用户界面(UI)操作时,请确保将所有相关数据传递给相应的子进程中,并等待子进程完成后再触发主界面(UI)的操作。
2 代码实现
就一个UDPServer类,头文件UDPServer.h,实现文件UDPServer.cpp。
#pragma once
#include <WinSock2.h>
#include <Ws2tcpip.h>
#include <iphlpapi.h>
#pragma comment
全部评论 (0)
还没有任何评论哟~
