2013-02-25 117 views
1

這是一個非常基本的問題(希望)有關在Windows,C++中使用recvfrom()。recvfrom()不返回收到的字節數

我正在實現一個非常基本的UDP函數,它發送一條消息,然後接收一個字符消息作爲回報。當我調用recvfrom()時,我得到適當的消息,但該函數不返回接收到的字節數(字符數)。相反,它返回0 片段:

sendto(sock, "10000;1;Chris\0", 14, 0, 
    (struct sockaddr FAR *) &sin, sizeof(sin)); 

if(nchars = recvfrom(sock, buf, LINELEN, 0, NULL, NULL) < 0) 
    errexit("recvfrom failed: error %d\n", GetLastError()); 
buf[nchars] = '\0'; 

我回消息需要附加一個空字符,但nchars不斷恢復爲0,使這個困難。任何想法爲什麼recvfrom()不會返回接收到的字節數?

+2

當然,如果'recvfrom'返回零,你實際上沒有收到任何東西。我非常懷疑'recvfrom'是如此根本的問題 - 畢竟,這很可能是您的瀏覽器正在使用什麼來查看此頁面... – 2013-02-25 00:06:55

回答

4

檢查if語句中的運算符優先級。 你想要的是

if ((nchars = recvfrom(sock, buf, LINELEN, 0, NULL, NULL)) < 0) 

快樂facepalming,我猜。 :)

+0

哎呀,一朵雛菊。謝謝。 – cmgurba 2013-02-25 00:47:39

相關問題