Sockets UDP套接字:错误34,但工作正常
我有一个recvfrom返回错误34,我已经检查过,它意味着“数值结果超出范围”,但在它正确接收数据以及接收的数据量正确后。我想过一段时间它可能会崩溃。这里我显示了对recvfrom的调用:Sockets UDP套接字:错误34,但工作正常,sockets,udp,Sockets,Udp,我有一个recvfrom返回错误34,我已经检查过,它意味着“数值结果超出范围”,但在它正确接收数据以及接收的数据量正确后。我想过一段时间它可能会崩溃。这里我显示了对recvfrom的调用: int dataRCV = -55; dataRCV = recvfrom ( sockfd2, data_CPV, sizeData_CPV, 0, (struct sockaddr*)&client_addr2,&client_addresslen2); fprintf(%i
int dataRCV = -55;
dataRCV = recvfrom ( sockfd2, data_CPV, sizeData_CPV, 0, (struct sockaddr*)&client_addr2,&client_addresslen2);
fprintf(%i %s, dataRCV,sterror(errno));
谢谢recvfrom()
返回读取的字节数,而不是错误代码。如果recvfrom()
失败,它将返回-1,errno
将报告实际的错误代码
int dataRCV = recvfrom ( sockfd2, data_CPV, sizeData_CPV, 0, (struct sockaddr*)&client_addr2, &client_addresslen2);
if (dataRCV == -1)
fprintf(%i %s, errno, sterror(errno));
因此,如果将
dataRCV
设置为34,则recvfrom()
已成功读取34个字节,而不是失败。以任何方式使用errno
都是无效的,除非之前的系统调用已返回-1。