ポール・グリーン2012年10月29日2019年10月23日ノーコメントタイトルとは裏腹に、数学オタクモードには戻っていないのでご安心を。話題は数論ではなく、ソケットプログラミングと、私がよく見かけるコーディングミスです。図1のコードの断片は、その間違いを示しています。メインのwhileループがあり、selectを呼び出して文字を受信できるようになるのを待つというループが永遠に繰り返されています。selectが文字が利用可能であることを示すと、コードは10文字を受信するまで別のループを繰り返します。返ってくるかどうかを正しくチェックします。あれば、受信した文字をアプリケーションバッファに連結し、受信した文字数を現在のメッセージの受信文字数に加算します。いう値があるかどうかをチェックし、それ以外の値であればエラーでプログラムを終了します。図2にセッションの例を示す。黄色いの場合、返された処理済みメッセージは強調表示されません。セグメントで送信されます。文字が送信されると、すべてが動作します。文字だけが送信されると、サーバは応答しなくなります。サーバのデバッグ出力errnoの値が0ではないので、受信した文字はアプリケーションバッファに連結されず、コードは永遠にループします。これはソケットコードのバグではありません。errnoの値は未定義であることが明示されています。errnoはそれまでの値を保持します。つに分割する人はいないだろうと思うかもしれませんし、その通りかもしれません。メッセージではなくバイトのストリームであることを覚えておいてください。セグメントに分割することができます。セグメントに分割することができますが、これを可能にする条件があります。適切な条件の下では、このサーバコードはすべての受入テストに合格し、少なくともしばらくの間は本番環境で正常に動作する可能性があります。良いニュースは、非常に簡単な修正があるということです。大きいかどうかをテストするだけです。文に到達する方法があることが指摘されていることにも注意してください。データを実用的なインテリジェンスに変換することを可能にしています。Brasileiro。