1つのTCPソケットから別のソケットにデータを転送するプログラムを作成したい。2つの異なるプログラムがサーバーに接続されており、サーバーを介して通信したい。
実際には、サーバーを介して2つのゲームを通信させたいので、ゲームのプレーヤーにとって透明に見えるサーバーを作成したいと思います。一方の側からもう一方の側に来るものはすべて転送されます。
あなたはあなたの問題が何であるかを言いませんでした、しかし私は推測をします。コンテンツをバッファに読み込み、コンテンツを取得した場合は、バッファ全体を出力ストリームに書き込みます。実際に読み取られたバイト数のみを書き込む必要があります。
byte[] b = new byte[BUFSIZE];
int chunkSize;
while(true) {
try {
while( (chunkSize = is.read(b)) != -1) {
os.write(b, 0, chunkSize);
os.flush();
}
} catch (IOException ex) {
Logger.getLogger(socketProducer.class.getName()).log(Level.SEVERE, null, ex);
}
}