我用Java编写了一个客户端 - 服务器聊天室。我想确保所有用户都在线,如果有人通过fource断开连接,我想告诉大家他已离开。 如何检查用户是否在线? 我有一个带有这个数据的类:Username,Socket,ObjectInputStream,ObjectOutputStream给每个用户...... 非常感谢。
答案 0 :(得分: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
}
}
ALSO
private void closeLink() {
try{
out.println ("bye"); //tell server client is disconnecting
sock.close ();
}
catch (Exception e){
System.out.println (e);
}
System.exit(0);
}
答案 1 :(得分:0)
您需要做的就是检查Socket
对象。假设在实际进入TCP连接之前不构造每用户类,只需使用Socket#isClosed()
即可。另请注意getInputStream()
上记录的行为。