0

最初に少しコンテキストを説明します。質問を理解しやすくするために、Javaネットワーキングについては十分に理解していますが、これまでに行ったすべてのネットワーキングは、コマンドを送信しました->応答を待ちます->繰り返します。最近、暇なときに少し違うことをやっています。マッドに接続したいのですが、標準のマッドクライアントを使用しています。しかし、私は考え始めて、泥に接続するサーバーを作成できるかどうかを確認することにしました(したがって、クライアントを使用して中間サーバーに接続し、次に泥に接続します) 。ほとんどの場合、これは私が最初にできるかどうかを確認するためだけのものでした(数人の友人と私はゲームチャットの外でセットアップしたかったなど)が、私はいくつかの問題に遭遇しており、それらはかなり見えるので、将来の参照のために解決したいと思います重要。

これまでのところ、ServerSocketをセットアップし、クライアント接続を受け入れ、入力ストリームと出力ストリームを保持するBufferedReaders / PrintWritersを生成します(新しい接続ごとのスレッド内)。次に、そのクライアントスレッド内に2番目のスレッドを生成して泥に接続します。これにより、読み取り行が常にループされ、クライアントスレッドの出力ストリームに出力されます。クライアントスレッドはコマンド入力を待機してループし、それを処理します。

このアプローチが適切かどうかはわかりません(前述したように、入力と出力を同時に処理する必要があるソケットプログラミングを行ったことがありません)。ただし、主な問題は、出力が数行後に停止することです。サーバーは泥にうまく接続し、ログイン画面の約12行を印刷します(重要な2行の間隔で問題が発生する場合は、この番号を明確にすることができます)。私は周りを見回し、同様の問題を回避するために一連のバイトを送信する必要があると述べた他の質問のいくつかの言及(telnetネゴシエーション?私は用語に精通していません)が、問題に関する具体的な情報をあまり見つけることができませんでした。

私はそれが私が知らない技術であるとかなり確信していますが、誰かが私にいくつかのリソースを指摘したり、一般的な解決策などを提供したりできれば、それは素晴らしいことです。

4

1 に答える 1