Advertisement

学习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)

还没有任何评论哟~