如果信号中断数据报套接字上的sendto或recvfrom调用会发生什么?我能期望这些调用总是返回-1,errno == EINTR吗?或者它们可以返回正字节数,但我将完全重复调用?
vaqhlq811#
在数据报套接字上,sendto和recvfrom总是发送和接收完整的数据报,或者什么都不发送。如果它们能够在数据报的中间停止,则会破坏数据报的点。有一个例外-如果缓冲区太小,recvfrom可能会截断数据报的结尾。整个数据报都被接收到了,但是你的程序并不能看到它的全部。
sendto
recvfrom
1条答案
按热度按时间vaqhlq811#
在数据报套接字上,
sendto
和recvfrom
总是发送和接收完整的数据报,或者什么都不发送。如果它们能够在数据报的中间停止,则会破坏数据报的点。有一个例外-如果缓冲区太小,
recvfrom
可能会截断数据报的结尾。整个数据报都被接收到了,但是你的程序并不能看到它的全部。