0

次のコードを使用してUDPを送信しようとしていますが、奇妙な結果が得られます。

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

    }

ただし、totalLength変数が30に設定されている場合、sendto関数は実際には2292556を返しますが、少なくとも30マーク付近で何かを返す必要はありませんか?sendtoを使用する前にtotalLength変数を確認しましたが、同意した値が返されますが、sendtoは大量の値を返します。全長が実際のバッファサイズより大きくなることはありません。

WSAGetLastErrorは0を返しています。

ありがとう。

4

2 に答える 2

1

あなたの問題は == bytesSent) < 0)条件の一部だと思います。これはの線に沿ったものではif (( bytesSent = sendto( ... )) < 0 )ないでしょうか?

于 2009-11-23T21:03:40.790 に答える
0

sendto(...) がbytesSentおそらくではなく等しいかどうかを確認していますbytesSent=sendto

于 2012-03-24T09:33:23.890 に答える