0

読み方send(sock_fd, line, size, 0);

私はこのようなプログラムを持っています、

if (send(new_socket,sendToEMVSS,EMVSSSendBufferLength,0)!=EMVSSSendBufferLength)

プログラムを実行しようとしましたが、結果は常に!=EMVSSSendBufferLength

4

1 に答える 1

1

本当に戻り値を保持する必要があります。

  • -1 の場合、詳細なエラー情報が に表示されerrnoます。
  • それが正であるが、それよりも小さい場合はEMVSSSendBufferLength、多くのバイトが送信されたことを意味するだけであり、残りを別の呼び出しで送信する必要があります。errno == EAGAINすべてを送信しない理由は、送信ウィンドウがいっぱいであるためです。

また、パケットは本当に固定サイズですか? 実際のメッセージのサイズではなく、バッファのサイズを誤って渡していませんか?

于 2013-07-23T07:57:47.980 に答える