2011-08-10 8 views
1

私は経験豊かな人ではありません。Java - ライブソケット接続を維持する方法

[OK]をので、私は2つのプログラム、サーバーごとに1つの(自分のPC)とクライアントのための1つ(他のPC) を持っており、これは

サーバは/が受け入れるリッスンセットアップです>クライアントが接続>サーバがにコマンドを送信クライアント>クライアントが実行されます。

とそれ以降は切断されますが、サーバーは必要に応じてコマンドを送信し続けるようにクライアントを接続しておく必要があります。

これをどのように達成できますか?

私は必要があればさらに詳しい情報を提供することができます! すべての助けを借りてくれてありがとう。

+0

これは、なぜ、まったく切断するのかという疑問を引き起こします。 – mre

+0

開いているソケットへの参照を保持している限り、接続は開いたままにしておく必要があります。 (ネットワーク障害が発生していません) – jjnguy

答えて

8

accept()が返ってくると、サーバーはソケットを受け取ります。ソケットが閉じられない限り、接続は開いたままです。その後、クライアントが接続を閉じるまで、クライアントはread/execute-commandのループで実行されます。必要に応じて詳細を提供することができます。

+0

はい、私は接続を生かしておくために別のスレッドで何らかの種類のループを実行しようとしましたが、そのスレッドはループしているのでループしていません。 – Mark

+0

私はalittleビットで助けるコードを提供します。ちょうど私があなたと答えて応答するまで待ってください。 – Mark

+0

クライアント側のループは、ソケットを読み書きするためのものではありません... javaのserversocket/socketクラスはTCP/IPソケットですので、切断するまで切断しません –

0

Java socketsで始めるための公式の例がいくつかあります。 Javaを使用しているので、この設定を簡単に行うことができます。

ケビンは既に言ったように、あなたは開いているポートの一部でServerSocketを開くでしょう。次に、accept()を呼び出します。これは、クライアントがServerSocketと同じポート上のSocketに接続したときに返されます。

また、クライアントプログラムをホストと異なるコンピュータから接続する場合は、指定したホストに注意してください。ホストを "null"または "127.0.0.1"と指定すると、ループバックインターフェイスに問題が発生する可能性があります。

関連する問題