
Linux中UDP socket在非阻塞和阻塞模式下的差异
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本文探讨了在Linux环境下,使用UDP sockets时,非阻塞与阻塞两种模式之间的区别及其对程序性能的影响。
在Linux系统下设置UDP socket为非阻塞模式与阻塞模式的区别在于处理数据接收的方式不同。
当使用非阻塞模式进行recvfrom操作时:
```c
Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), MSG_DONTWAIT, (struct sockaddr *)&SockAddr,&ScokAddrLen);
```
其中,参数`MSG_DONTWAIT`表示如果数据不可用,则函数立即返回错误EAGAIN或EWOULDBLOCK而不阻塞。
而在使用阻塞模式进行相同的recvfrom操作时:
```c
Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), 0, (struct sockaddr *)&SockAddr,&ScokAddrLen);
```
这里没有指定任何特殊的标志,因此当数据尚未到达且缓冲区为空时,函数会阻塞直到接收到新的数据。
这种设置方式的选择取决于应用程序的具体需求和设计。
全部评论 (0)
还没有任何评论哟~


