以下のメッセージを削除します。


[2001] Re:P.17:終了のマークとして0を送付について
返信


投稿者:(ぱ)こと管理人
2017/08/23 19:06:08

Link:
>一方、TcpServerがserver_send.txtを送る際は、終了のマークとして0を送っていませんし、さらに‐1も送っていませんが、TcpClient側は‐1の受信で受信の終了を認識しています。

TcpClient.javaは、InputStremのread()メソッドで入力を1バイトずつ
読み込んでいますが、read()メソッドは、正常に1バイト読み込んだ時、
0〜255の値を返します。つまり、TcpClientが-1を受信するということは
あり得ません。-1が返るのは、「ストリームの終わりに達した場合」です。

https://docs.oracle.com/javase/jp/6/api/java/io/InputStream.html#read()

なぜクライアントから見てストリームが終わるのかといえば、それは
サーバ側でソケットをclose()したからです。

TcpClient.javaにて、終了のマーク0を送信しているのは、このソケットは
まだサーバからデータを返すのに使うので、このタイミングでclose()するわけには
いかないからです。

これで回答になっておりますでしょうか?

パスワード:

管理者削除