1

これは、Windows、C ++での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()が受信したバイト数を返さない理由はありますか?

4

1 に答える 1

6

ifステートメントで演算子の優先順位を確認してください。あなたが欲しいのは

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

幸せなfacepalming、私は推測します。:)

于 2013-02-25T00:12:48.227 に答える