
サーバ側では、クライアントが送信したバイトデータを受信させます。read()の戻り値を利用して、届いたバイトを確認します。
そして、サーバ側がクライアント側に、届いたバイトデータ分だけの
バイトデータを送信します。これらにかかる時間も計測するプログラムを作成しています。
サーバ側がバイトデータを受信し、その時間を計測する所までは、動いたのですが、
サーバ側がクライアント側に、バイトデータを送信する処理の、出力ストリームへの書き込みの処理でエラーが生じます。
Xつ目のバイト:書き込みエラーと表示されます。
なぜエラーになってしまうのでしょうか?送信と受信の処理部分のコードを載せるので、おかしな部分を指摘していただきたいです。
ServerSocket server = new ServerSocket(servPort);
Socket sock = server.accept();
BufferedInputStream in = new BufferedInputStream(sock.getInputStream());
BufferedOutputStream out = new BufferedOutputStream(sock.getOutputStream());
long startNs = 0;
long stopNs = 0;
byte[] buf = new byte[1000000];
int total = 0, part;
System.out.println("<データ受信処理>");
startNs = System.nanoTime(); // 受信前の時間のナノ秒を返す。
while ((part = in.read(buf)) != -1) {
total += part;
System.out.println(part);
}System.out.println(part);
stopNs = System.nanoTime(); // 受信後の時間のナノ秒を返す。
System.out.println("受信完了");
System.out.println("受信されたバイト数:" + total);
// 受信スループットを計算する。
...
int count = 0; // write()の回数
System.out.println("<データ送信処理>");
for (int i = 0; i < total; i++) {
try {
out.write(i);
out.flush();
count++;
} catch (IOException e) {
System.err.println((count + 1) + "つ目のバイト:書き込みエラー");
}
}
// 結果を表示する。
System.out.println("送信完了");
System.out.println("送信されたバイト数:" + count);
No.1ベストアンサー
- 回答日時:
現実の状況がよくわかりませんが、ふつうはクライアントがシャットダウンしたという解釈になるでしょう。
なお、write()メソッドは、引数はintでも実際にはbyteデータしか送れませんから、気をつけて。
参考URL:http://homepage1.nifty.com/algafield/jnet/sock.h …
回答ありがとうございます。
教えていただいたサイトを見て参考にさせていただきました。
新しくソケットを作成したらエラーがなくなりました。
アドバイスをありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- 英語 この英文の意味を教えてください 3 2023/07/07 20:36
- その他(メールソフト・メールサービス) メールが送信できない 発信側でできる対策 3 2023/05/11 10:22
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Ruby vscode 文字化け 1 2022/05/21 19:17
- 電車・路線・地下鉄 ITパスポート試験問題 7 2023/01/25 09:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のポインターに関する警告
-
[JAVA]try 内の変数を外で!?
-
EclipseでJava
-
JSPやサーブレットでSystem.out...
-
java教えてください。
-
複数行キーボード入力した後に...
-
Javaのコマンドライン引数を使...
-
Javaでカレントディレクトリを...
-
nullcline
-
文字列の引き算
-
セッションのリセット
-
掛け算九九の表示の仕方。
-
javaで判別式のプログラミング...
-
JavaにはなぜGO TO ...
-
「続行するには何かキーを押し...
-
フィボナッチ数列
-
java Calendarクラス
-
java Threadのsleepを途中で止...
-
JAVAのDouble型の小数点以下の...
-
JAVA 文字色変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPやサーブレットでSystem.out...
-
C言語のポインターに関する警告
-
[JAVA]try 内の変数を外で!?
-
EclipseでJava
-
java int integer
-
「続行するには何かキーを押し...
-
構文解析中にファイルの終わり...
-
文字列の引き算
-
Javaでカレントディレクトリを...
-
JAVAのDouble型の小数点以下の...
-
配列を後ろから数えるには?
-
float型の桁調整について
-
vb6 オブジェクトライブラリは...
-
JAVA 文字色変更
-
データベースに接続できません。
-
DOMで要素の値がNULL
-
Javaのプログラムがどうしても...
-
JDBCでのinsertについて
-
java Calendarクラス
-
コメントアウトされたエスケー...
おすすめ情報