У меня есть класс с именем class1, в котором у меня есть следующий код:
public class class1 {
public static ServerSocket serverSocket;
public static void main(String args[]) {
try {
serverSocket = new ServerSocket(1234);
while (true) {
class2 t = new class2(serverSocket.accept());
t.start();
}
} catch (IOException ex) {
Logger.getLogger(LisenerServer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Итак, в классе 1 я открываю новый поток для каждого соединения.
И у меня есть еще один класс с именем class2, в котором у меня есть следующий код:
public class class2 extends Thread {
private Socket socket;
public class2(Socket socket) {
try {
this.socket = socket;
in = new BufferedInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
} catch (IOException ex) {
Logger.getLogger(ListenerServerThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void run() {
while (true) {
try {
// do something with in and out.
} catch (IOException ex) {
System.out.println(ex);
break;
}
}
}
}
Я хочу, чтобы клиенты (не Java-программы) подключались к моему серверу сокетов и отправляли команды sting, и я хочу знать, подключен ли клиент (я буду идентифицировать клиента по имени потока и/или идентификатору, открытому в классе 1) или нет .
Могу ли я создать другой класс, скажем, класс 3, в котором я открываю один поток, чтобы постоянно проверять, подключены ли клиенты или нет? Если можно, не могли бы вы привести пример?