- PR -

MacOSでsocket送信すると遅い

1
投稿者投稿内容
TA
会議室デビュー日: 2004/08/28
投稿数: 4
投稿日時: 2006-12-07 21:39
お世話になります。

あるデバイスにSocketクラスでデータを送信するJavaAppletのアプリ作成しています。

そこで、Windowsから送信する場合、Macから送信する場合とで、送信時間に大きな違いが出ています。
(MacはWindowsの5倍程送信にかかる)

WindowsとMacの違いでこのようなことが起こるものなのでしょうか?

何かご存知の方、ご教授お願いいたします。


(環境)
OS :Windows2000 / XP
Mac OS 1.3 / 1.4
Java :1.4.2_03

---------------------------------------------------------------------------------------------------------

Socket socket = new Socket(IPアドレス, ポート);

socket.setSoTimeout((int) timeOut);

socket.setSendBufferSize(sendFile.length);

BufferedOutputStream output = new BufferedOutputStream(socket.getOutputStream(), sendFile.length)

output.write(sendFile);

output.flush();

out.close();
---------------------------------------------------------------------------------------------------------
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-07 23:31
実測でそうでたのならそうかもしれない、ですね。
flush のタイミングを変えてパケットサイズをMTU に合わせることで改善するかもしれませんね。
安田
会議室デビュー日: 2006/12/07
投稿数: 4
投稿日時: 2006-12-08 02:18
使用しているPCの性能(CPU、メモリ、NICの性能、設定など)と
前述のMTUと、バッファサイズ、
それと何バイトのデータを送信するのに、何秒かかったか?
を明記したほうがいいかもしれません。

やり取りするデータ量によって、(ハードウェアの性能などにより)
速度は変わります。

小さいデータを連続でやり取りするときは、相対的に遅くなりますし、
大きなデータをやり取りするときは、ハードウェアの限界までの
スピードが出ます。


あと、この手のテストをするときは、送信側PCと受信側PCだけの
プライベートネットワークを作って測定してくださいね。

AppleTalkやWindowsのブロードキャストがだだもれてるので。

P.S. Macのバージョンは、OSXですよね?ねんのため。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-12-08 06:43
送信側がこれだけのコードなのだとしたら、受信側の問題かもしれませんね。プロトコルスタックの挙動が変わったことで、受信側のバグが表面化したとか・・・。Windows同士ならNetBIOSで名前解決できてたのが、名前解決ができなくなったことで遅くなったとか・・・。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
TA
会議室デビュー日: 2004/08/28
投稿数: 4
投稿日時: 2006-12-19 21:53
レスがおそくなりました。

インギさん、安田さん、甕星さん。
ご返信ありがとうございます。


実際の送信サイズが6MBほどありますので、
1024バイトずつ分けて送信するように修正したところ(socketのバッファサイズも1024バイトに)
うまく送信ができました。

1

スキルアップ/キャリアアップ(JOB@IT)