私はチャットプログラムを作成します。私のサーバにはボタンがあり、ボタンはサーバーソケットでサーバーコールaccept()メソッドを開始するためのボタンで、サーバーソケットでサーバーコールclose()を閉じるためのボタンです。accept()、close()メソッドServerSocketで
同じソケット上で接続を再受け入れるために「開始」ボタンを再度押すと、メソッドはaccept SocketExceptionソケットを閉じます。
私はチャットプログラムを作成します。私のサーバにはボタンがあり、ボタンはサーバーソケットでサーバーコールaccept()メソッドを開始するためのボタンで、サーバーソケットでサーバーコールclose()を閉じるためのボタンです。accept()、close()メソッドServerSocketで
同じソケット上で接続を再受け入れるために「開始」ボタンを再度押すと、メソッドはaccept SocketExceptionソケットを閉じます。
ソケットを再度開くことはできません。変数を再度使用する場合は、新しいソケットを作成して割り当てる必要があります。 Socket上のJavaドキュメントから
、「クローズ」-method上の情報を参照してください。ソケットがクローズされたら、それはさらにネットワーキングの使用のために利用できない、(つまり、再接続することができないか、リバウンド)。新しいソケットを作成する必要があります。
このソケットを閉じると、ソケットのInputStreamとOutputStreamも閉じます。
以前のソケットが正常に閉じられた場合、そのソケットの再インスタンス化に問題はないはずです。 JVMがあなたのためにゴミを解放するので、これはJavaで動作します。
サーバーに複数の接続が必要な場合(これはチャットを行っているので便利です)、この点に留意してください。 サーバー側のaccept関数は、要求されるたびに新しいソケットを作成します。したがって、スレッドを使用して、新しいソケット(acceptを使用して作成されたソケット)をスレッドに渡すことができます。
これは、あなたの質問に応答しない場合、私は、OracleのWebサイト上で行くことをお勧めします:http://docs.oracle.com/javase/tutorial/
との質問を再定式化します。
どのようにすべてのソケットを閉じてserver.when上の閉じるボタンからaccpetメソッドによって作成された私は複数のクライアントをサーバーに接続し、閉じるボタンからsocket.closeを呼び出すと、 –
"サーバーが起動または実行中にエラーが検出されると、すぐにすべてのソケットを閉じて終了します。クライアントまたはサーバーのいずれかが接続を閉じると、Proxy Serverはすべての接続を閉じます-1が送信されたためにクライアントまたはサーバーのいずれかが切断されたかどうかを知っています。Proxy Serverはこれを待ち受けて待機し、発生するとすべてのソケットが閉じられます。 http://www.dwgold.com/Projects/Networking/Proxyserver/Default.aspx –
すべてのソケットを閉じるためにサーバーからソケット例外をスローすると、-1はクライアントに送信されません。 –
どうすればお手伝いできますか?何も思いつきません。 FAQをお読みください。あなたの他の質問にも回答を受け入れてください。 – Nettogrof
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html#close()。 ServerSocketの新しいインスタンスを作成し、そのインスタンスに対してacceptメソッドを呼び出す必要があります。 – JProgrammer