小编aig*_*761的帖子

非阻塞UDP写入返回的字节数是否少于请求的字节数?

我有一个应用程序通过可以在单工(单向传输)或双工模式(双向)操作的链路发送数据从发送器到接收器的点对点.在单工模式下,应用程序使用UDP发送数据,而在双工模式下,它使用TCP.由于TCP套接字上的写入可能会阻塞,因此我们使用非阻塞IO(ioctl与FIONBIO - O_NONBLOCK并且此分发不支持fcntl)和select()系统调用以确定何时可以写入数据.如果网络条件恶化,我们可以在超时后提前中止发送.我想使用相同的基本代码来进行发送,而是在更高抽象的TCP/UDP之间进行切换.这对TCP很有用.

但是我担心Non Blocking IO如何用于UDP套接字.我可能正在错误地阅读手册页,但由于write()可能返回指示发送的字节数少于请求的数量,这是否意味着客户端将在其数据报中接收更少的字节?要发送给定的数据缓冲区,可能需要多次写入,这可能是因为我使用非阻塞IO.我担心这会转化为客户端收到的多个UDP数据报.

我是套接字编程的新手,所以如果在这里有一些误解,请原谅我.谢谢.

c sockets udp

6
推荐指数
1
解决办法
722
查看次数

标签 统计

c ×1

sockets ×1

udp ×1