C# での演習として、単純な TCP フォワーダーを作成しようとしています。これは、ある TCP ストリームを別の TCP ストリームに転送するために使用している関数です。
public static void forward (NetworkStream stm1, NetworkStream stm2)
{
new Thread (new ThreadStart(() =>{
try{
while (true) {
int a = stm1.ReadByte ();
if (a > 0) stm2.WriteByte ((byte)a);
}
}catch{
stm1.Close();
stm2.Close();
}
})).Start ();
try {
while (true) {
int a = stm2.ReadByte ();
if (a > 0)
stm1.WriteByte ((byte)a);
}
} catch {
stm1.Close ();
stm2.Close ();
}
}
ただし、これは正しく機能していないようです。まあ、私はそれを通して物事をtelnetすることができますが、
- 恐ろしい量の CPU を使用します
- HTTP経由で画像を適切にロードすることを拒否するため、8ビットクリーンではないようです.
そのような機能を適切に実装するにはどうすればよいですか?