网络协议 -- UDP协议(5)UDP的IOCP实现

关于IOCP网络模型的介绍可以参考:http://blog.csdn.net/china_jeffery/article/details/78815373
IOCP模型对协议是没限制的,无论是TCP还是UDP都是支持的。
UDP的IOCP模型实现的不同之处在于投递发送请求接受请求所用的函数不同:

int WSARecvFrom(
  SOCKET s,
  LPWSABUF lpBuffers,
  DWORD dwBufferCount,
  LPDWORD lpNumberOfBytesRecvd,
  LPDWORD lpFlags,
  struct sockaddr* lpFrom,
  LPINT lpFromlen,
  LPWSAOVERLAPPED lpOverlapped,
  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
int WSASendTo(
  SOCKET s,
  LPWSABUF lpBuffers,
  DWORD dwBufferCount,
  LPDWORD lpNumberOfBytesSent,
  DWORD dwFlags,
  const struct sockaddr* lpTo,
  int iToLen,
  LPWSAOVERLAPPED lpOverlapped,
  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);

IOCP模型的实现(无论是TCP还是UDP)已经添加到了webrtc的rtc_base库中(还未合并到官方代码中):

git clone git@gitee.com:china_jeffery/webrtc.git

具体实现在rtc_base\overlappedsocket.h, rtc_base\overlappedsocket.cc文件中。

示例代码见工程src\msvc\test\目录中的测试工程。

webrtc工程的编译可以参考:WebRTC – Windows平台编译
webrtc添加IOCP模型的支持可以参考:WebRTC–添加IOCP网络模型支持

你可能感兴趣的:(☆,网络编程,网络协议)