1

以下のコードを使用して、ソケットからデータを読み取ります。反対側では、文字列データを送信する Java クライアント。ただし、データの読み取り中に、文字列の末尾に追加の \n が表示されます。なぜこれが起こるのか誰でも説明できますか?

コード:

  unsigned char buf[100]; 
  rd=read(newsockfd,buf,100);
  char cmd[30];
  sprintf(cmd,"%s",buf);

結果:

buf->"DATA\n"
cmd->"DATA\n"

クライアントから「DATA」を送信すると、サーバー側で「DATA\n」を取得しています。誰でもこの理由を説明できますか? 送信した正確なデータを抽出するにはどうすればよいですか。

4

2 に答える 2

1

ここでの私の推測では、改行は Java クライアント自体から来ていると思います。

おそらく、クライアントは、ネットワーク上で送信する前に、渡された文字列に改行を追加するsendLine(String)ような関数を使用しています。私はJavaを知りませんが、これは非常にありそうです。

于 2013-05-29T08:45:55.450 に答える
1

Javaでは、(他の人が指摘したように)最後に「\ n」を追加するsocket.writeLine( "Data")と言うことができます。私が気づいたことの 1 つは、あなたが書いたコードで、送信者が 100 文字を超えて送信すると、メモリ エラーが発生する可能性があるエラーが発生する可能性があることです。

unsigned char buf[100];   
rd=read(newsockfd,buf,1024);

ここでは、最大 1024 文字/バイトを読みたいと言っていますが、バッファは [100] として宣言されています。注意してください!

于 2013-05-29T12:13:44.557 に答える