- - PR -
MacOSでsocket送信すると遅い
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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(); --------------------------------------------------------------------------------------------------------- |
|
投稿日時: 2006-12-07 23:31
実測でそうでたのならそうかもしれない、ですね。
flush のタイミングを変えてパケットサイズをMTU に合わせることで改善するかもしれませんね。 |
|
投稿日時: 2006-12-08 02:18
使用しているPCの性能(CPU、メモリ、NICの性能、設定など)と
前述のMTUと、バッファサイズ、 それと何バイトのデータを送信するのに、何秒かかったか? を明記したほうがいいかもしれません。 やり取りするデータ量によって、(ハードウェアの性能などにより) 速度は変わります。 小さいデータを連続でやり取りするときは、相対的に遅くなりますし、 大きなデータをやり取りするときは、ハードウェアの限界までの スピードが出ます。 あと、この手のテストをするときは、送信側PCと受信側PCだけの プライベートネットワークを作って測定してくださいね。 AppleTalkやWindowsのブロードキャストがだだもれてるので。 P.S. Macのバージョンは、OSXですよね?ねんのため。 |
|
投稿日時: 2006-12-08 06:43
送信側がこれだけのコードなのだとしたら、受信側の問題かもしれませんね。プロトコルスタックの挙動が変わったことで、受信側のバグが表面化したとか・・・。Windows同士ならNetBIOSで名前解決できてたのが、名前解決ができなくなったことで遅くなったとか・・・。
_________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ |
|
投稿日時: 2006-12-19 21:53
レスがおそくなりました。
インギさん、安田さん、甕星さん。 ご返信ありがとうございます。 実際の送信サイズが6MBほどありますので、 1024バイトずつ分けて送信するように修正したところ(socketのバッファサイズも1024バイトに) うまく送信ができました。 |
1