2009-11-23 64 views
0

我想通過使用下面的代碼發送UDP,但我得到奇怪的結果。當totalLength變量設置爲30 sendto函數實際上返回2292556,它應該不會再重返至少圍繞盤的30標記的東西C windows sendto()

if((sendto(newSocket, sendBuf, totalLength, 0, (SOCKADDR *)&sendAddr, sizeof(sendAddr)) == bytesSent) < 0) 
    { 
    printf("Send error! - %d\n", WSAGetLastError()); 

    } 

但是說什麼?在使用sendto之前,我已經檢查了totalLength變量,它會愉快地返回一個我同意的值,然後sendto返回一個巨大的值。總長度從不大於實際緩衝區大小。

WSAGetLastError剛剛返回0.

謝謝。

回答

1

我認爲你的問題是== bytesSent) < 0)條件的一部分。難道這應該是if ((bytesSent = sendto(...)) < 0)

+0

啊是的,當然我不能相信我沒有看到這一點。我已經爲此感到沮喪了將近一個小時v.v – Alistair 2009-11-23 21:05:04

+0

Blame =,==和行太長了:) – schnaader 2009-11-23 21:06:45

0

您checing使用sendto(...)等於bytesSent,而不是可能bytesSent=sendto