2014-08-27 18 views
0

我有一個recvfrom返回錯誤34,我已檢查,它意味着「數值結果超出範圍」,但它正確接收數據後,也收到的數據量是正確的。我認爲它可能會在一段時間後崩潰。在這裏,我表明調用recvfrom的:UDP套接字:錯誤34,但工作正常

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,否則以任何方式使用'errno'都是無效的。 – EJP 2014-08-28 04:20:42

回答

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個字節,而不是失敗。