UDP套接字:错误34但工作正常

时间:2014-08-27 12:25:10

标签: sockets udp

我有一个recvfrom返回错误34,我检查了它意味着“数值结果超出范围”但是在它正确接收数据之后,接收的数据量也是正确的。我想它可能会在一段时间后崩溃。在这里,我展示了对recvfrom的调用:

int dataRCV = -55;

    dataRCV = recvfrom ( sockfd2, data_CPV, sizeData_CPV, 0, (struct sockaddr*)&client_addr2,&client_addresslen2);

fprintf(%i %s, dataRCV,sterror(errno));

谢谢

1 个答案:

答案 0 :(得分:1)

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个字节,而不是失败。