对于端口复用技术,核心问题是对数据包的接收处理。当网络应用程
序接收一个数据包时,如图2,会通过API函数RecvFrom
或WSARecvFrom调用对应的SPI函数WSPRecvFrom通过
对WSPRecvFrom的重新设计可以实现端口复用的功能,相
关核心代码如下:
int WSPAPI WSPRecvFrom(参数略)
{
//先接收网络数据包
nextproctable.1pWSPRecvFrom(s,lpBuffers,dwBufferCount,lpNurn
berOfBytesRecvd,lpFlags,lpFrom,lpFromlen,lpOverlapped,lpCompletio
nRoutine,lpThreadld,lpErmo);
i"是给端口复用模块的)
{ 端口复用模块进行相应处理
}
Else转发给网络应用程序}
对端口复用技术,发送数据包的处理相对简单,在端口
复用模块中直接调用系统提供的SPI函数WSPSendTo即可。