このコードは、ソケットを使用して「チャット ルーム」プログラムに埋め込まれています。クライアント (myFD) から読み取り、先頭にユーザー名を正常に追加しています。
ただし、書き込みバッファーに余分な文字を書き込む際に問題があります。前回送信したものは保存され、送信もされています。
たとえば、初めて送信する(そして正しく書く)
国連:こんにちは。
しかし、2 回目の試行で、「NOT」と書くと、送信されるメッセージは次のようになります。
国連: NOTlo
cout ステートメントは、最後に「lo」がなくても正しく「cout's」になりますが、クライアントは最後に「lo」を受け取ります。私は単純なものを見落としていますか?
以下のコード:
while ( (amount_read = read(myFD, buffer, 1024)) > 0)
{
total = 0;
strcpy(second, "");
strcpy(second, username);
total += unLength;
strcat(second, ": ");
total += 2;
strcat(second, buffer);//, amount_read);
total += amount_read;
cout << second << endl;
write(myFD, second, total);
}
ありがとう!