サーバー アプリとクライアント アプリの間で Java ソケットを使用するアプリケーションを開発しています。これらのソケットを介してクライアントからサーバーにサイズ 64k のファイルを送信する必要があります。すべてのシステム (サーバーとクライアントの両方) をローカルで実行するとすべて問題なく動作しますが、サーバーとクライアントを別のマシンで実行すると失敗します。
JSON を使用してファイル コンテンツを処理しているため、サーバーでスローされる例外は「net.sf.json.util.JSONTokener.syntaxError」です。ただし、問題は JSON ではなく、ファイルのサイズです。サイズが 8k 未満のファイルを送信するとすべて問題ありませんが、サイズが大きくなると送信情報が切り捨てられるため、サーバーが切り捨てられた受信情報を解釈しようとすると JSONTokener.syntaxError がスローされます。
次のように 64k のソケット バッファを定義しています (NIO API を使用しています)。
SocketChannel sc;
private static final int BUFFER _SIZE = (int)Math.pow(2, 16);
.....
sc.socket().setReceiveBufferSize( BUFFER_SIZE );
sc.socket().setSendBufferSize( BUFFER_SIZE );
システムをリモート モードで実行しているときに、ネットワーク パッケージのサイズを拡大するにはどうすればよいですか? どれが問題なのか分かりますか? 事前にどうもありがとうございました。
オスカー