1

Java でクライアント サーバー チャット ルームを作成しました。私はすべてのユーザーがオンラインであることを確認したいと考えています。また、誰かが 4 度に切断された場合は、その人が去ったことを全員に伝えたいと考えています。ユーザーがオンラインかどうかを確認するにはどうすればよいですか? 私はこのデータを持つクラスを持っています:各ユーザーへのユーザー名、ソケット、ObjectInputStream、ObjectOutputStream...どうもありがとう。

4

2 に答える 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 に答える