Java でクライアント サーバー チャット ルームを作成しました。私はすべてのユーザーがオンラインであることを確認したいと考えています。また、誰かが 4 度に切断された場合は、その人が去ったことを全員に伝えたいと考えています。ユーザーがオンラインかどうかを確認するにはどうすればよいですか? 私はこのデータを持つクラスを持っています:各ユーザーへのユーザー名、ソケット、ObjectInputStream、ObjectOutputStream...どうもありがとう。
質問する
934 次
2 に答える
0
あなたがする必要があるのは、Socket
オブジェクトをチェックすることだけです。TCP 接続が実際に接続されるまでユーザーごとのクラスが構築されないと仮定すると、単にSocket#isClosed()
. に記載されている動作にも注意してくださいgetInputStream()
。
于 2013-08-17T16:16:10.847 に答える
0
これを使用して、ポートを介したトラフィックを確認できます。私がしばらく前に書いたこのプログラムは、ソケットを監視します。メッセージをさまざまなソケットにマルチキャストする場合、このプログラムを修正して、そのポートにクライアントの存在を示すことができます ~
import java.io.IOException;
import java.net.Socket;
public class ConnectionTest {
private static boolean available(int port) {
System.out.println("--------------Testing port " + port);
Socket s = null;
try {
s = new Socket("localhost", port);
// If the code makes it this far without an exception it means
// something is using the port and has responded.
System.out.println("--------------Port " + port + " is not available");
return false;
} catch (IOException e) {
System.out.println("--------------Port " + port + " is available");
return true;
} finally {
if( s != null){
try {
s.close();
} catch (IOException e) {
throw new RuntimeException("You should handle this error." , e);
}
}
}
}
public static void main(String[] args) {
System.out.println (available (1234)); // check if someone is on the port
}
}
また
private void closeLink() {
try{
out.println ("bye"); //tell server client is disconnecting
sock.close ();
}
catch (Exception e){
System.out.println (e);
}
System.exit(0);
}
于 2013-08-17T15:44:48.620 に答える