0

サーバーへの接続を試行したり、現在の接続を終了したりできるように、接続ボタンとキャンセル ボタンを備えた Swing クライアントがあります。クライアントがサーバーに接続し、接続を終了してから、サーバーに複数回接続できるようにしようとしています。

私の理解では、通常、クライアントとサーバーが接続を終了すると、誰が終了したかに関係なく、クライアントはストリームとソケットを閉じます。明らかに、それらを別の接続試行に再利用することはできません。現在、プライベート インスタンス変数として Socket および stream vars と、新しいソケットを作成するサーバーに接続するためのメソッドと、ストリームを開閉するためのメソッドがあります。

このようなものが通常どのように処理されるのか疑問に思っています。新しいソケットを作成し、ストリームを作成し、すべての通信とストリームとソケットのクローズを処理する 1 つの巨大なメソッドを持つことを考えましたが、面倒です。または、新しいスレッドですべてを作成し、通信が終了したときにスレッドを終了させることもできます。

アイデアを歓迎します。

4

3 に答える 3

1

-クライアントがサーバーに接続するときに、サーバー側で別のスレッドを作成します。

-その特定のクライアントの特定のスレッドへ読み取りと書き込みのプロセスを実行します。client socket

-そして、完了したらクライアント スレッドを終了します。

-再度接続しようとすると、新しいスレッドがスパンされます。

-HashMapクライアントとソケットとスレッドの関係を保持するタブをいつでも作成できます。

于 2012-11-10T11:50:37.267 に答える
0

GUIとは異なり、すべての「ロジック」を新しいクラスに配置する必要があります。次に、2つのボタンがあるため、Guiクラスはロジッククラス:connect()および。で少なくとも2つのメソッドを呼び出すことができるはずdisconnect()です。次に、これらのメソッドで、サーバーへの接続、ストリームの開閉などに必要なすべての作業を処理できます。

これにより、コードがより明確になり、保守しやすくなり、機能を追加する予定がある場合は、より進化する可能性があります。

于 2012-11-10T11:44:58.273 に答える
0

ソケットを作成するたびにスレッドを作成し、そのスレッドでリクエストとレスポンスを処理することをお勧めします。

于 2012-11-10T11:45:25.637 に答える