1

このコードがコンピューターのビープ音を鳴らす理由を理解するのに非常に苦労しています。コードのこのセクションを、ときどきビープ音を鳴らすセクションとして分離しましたが、何が問題なのかわかりません。

const int BUFFER_LENGTH = 8192;
char buffer [BUFFER_LENGTH + 1];
int recvResult;

do
{
    recvResult = recv(webSocket, buffer, BUFFER_LENGTH, 0);
    buffer[recvResult] = '\0';
    printf("%s", buffer);
    if (recvResult > 0)
    {
        sendResult = send(clientSocket, buffer, recvResult, 0);
    }
}while (recvResult > 0);

shutdown(webSocket, SD_SEND);

少しコンテキストを与えるために、これはプロキシをコーディングする必要があるコンピュータネットワーククラス用です。ですから、私がしているのは、答えを聞いて、それをクライアントに転送することです。

ビープ音が最初に聞こえたとき、私が椅子から飛び出した高さはわかりません...

4

3 に答える 3

11

バッファ'\a'には、コンピュータのビープ音を鳴らす文字が含まれている可能性があります。5.2.2から(文字表示セマンティクス):

実行文字セット内の非グラフィック文字を表すアルファベットのエスケープシーケンスは、次のようにディスプレイデバイスでアクションを生成することを目的としています。

  • \ a(アラート)アクティブな位置を変更せずに、可聴または可視のアラートを生成します。
于 2010-11-17T17:04:37.473 に答える
1

気にしないでください、それを見つけました、それは実際に時折ビープ音を鳴らしていたprintfステートメントでした!

于 2010-11-17T17:06:19.317 に答える
1

'\a'ビープ音の説明に同意します。

コードに関するもう1つのポイント:

recvResult = recv(webSocket, buffer, BUFFER_LENGTH, 0);
buffer[recvResult] = '\0';

recvResultI / Oエラーが発生した場合(または非ブロッキングモードで作業していて、これまでに読み取るデータがない場合)は-1になることに注意してください。

そのような場合、あなたは禁じられた記憶に書き込みます、それは(くそー、私がこのフレーズをどのように嫌うか)未定義の振る舞いです。簡単に言えば、メモリの上書きです。これは悪いことです。

書き込むにソケットエラーをチェックする必要がありますbuffer

于 2010-11-17T17:21:10.453 に答える