我有一个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));
谢谢
答案 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个字节,而不是失败。