GUIを持つサーバーアプリケーションを作成します
-
28-10-2019 - |
質問
GUIを持つアプリケーションを作成する必要があります。私のアプリケーションはサーバーとして機能する必要があります。開始すると、すべての着信接続を受け入れ、jtextareaで出力を書き込む必要があります。私の問題は、私が作成しなければならない場所です ServerSocket ss = new ServerSocket(port_number)
そして方法 ss.accept
方法で私は接続を受け入れることができます。私は自分のGUIのメインコンストラクターに作成しようとしましたが、 ServerSocket
anI/O
ソリューションを解決するために、GUIスタックをリクエストしてください。
GUIのコンストラクターに作成します。
SwingUtilities.invokeLater(new Runnable(){public void run(){connection();}});
どこ connection()
Serversocketを作成し、呼び出しを受け入れる方法です
解決
ネットワーク接続を待機/処理するために、個別のスレッドを作成する必要があります。
新しい接続が入っている場合、データを読み取り、それらをEDTに渡してGUIを更新します。
このようにして、GUIは応答します。
あなたは読むべきです MVCパターン スレッド。あなたがグーグルであるならば、勉強する豊富な記事があります
アップデート:
ここのあなたのコードは間違っています。
SwingUtilities.invokeLater(new Runnable(){public void run(){connection();}});
EDTスレッドから接続を処理しています。
これを使用してGUIを更新し、ネットワークI/Oコードを呼び出さないようにする必要があります。
他のヒント
IOロジックは、(少なくとも1つの)個別のバックグラウンドスレッドにある必要があります。それらの背景スレッドの1つから何かがテキスト領域に印刷される必要があるたびに、彼らはそれを使用する必要があります SwingUtilities.invokeLater()
, 、スイングコンポーネントがイベントディスパッチスレッドからのみアクセスされることを確認します。
とはいえ、サーバー用のGUIを持っていることは非常に良い考えではないと思います。単にログファイルに書き込み、テキストエディターを使用してサーバーが受信したものを確認してみませんか。または、サーバーのGUIをこのサーバーのクライアントとして書き込みますか?