Aquí le proporciono el código, por favor, trabaje sobre él para cumplir con los requisitos deseados:
importar java.io.BufferedReader;
import java.io.IOException;
importar java.io.InputStreamReader;
clase pública SimpleChat {
- Cómo convencer a mi amigo de que las calificaciones de la Junta de Clase 12 no son tan importantes como parecen
- ¿Puedo dar mis exámenes de la Junta 12 de nuevo 'legalmente'?
- Cómo obtener un 97% en los tableros CBSE 12 (PCB) al prepararse para un año entero
- ¿Cuál es el entrenamiento mejor, integrado o no integrado para IITJEE, CBSE o la junta estatal?
- ¿Cuáles son las mejores maneras de prepararse para el examen de la 10a junta de la clase (CBSE)?
booleano estático privado isRunning = true;
Remitente estático privado del remitente;
Receptor receptor estático privado;
public static void main (String [] args) lanza IOException {
si (args.length <3) {
showUsage ();
}
tratar {
receptor = nuevo Receptor (Integer.parseInt (args [1]));
remitente = nuevo Remitente (args [0], args [2], Integer.parseInt (args [3]));
} catch (InterruptedException e) {
showUsage ();
}
// Leer la entrada del usuario
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
System.out.println (“Chat iniciado. Escribe ‘\\ exit’ para salir.”);
while (isRunning) {
Entrada de cadena = br.readLine ();
if (input.equals (“\\ exit”)) {
receiver.stop ();
sender.stop ();
isRunning = false;
} else {
sender.sendMessage (entrada);
}
}
}
showUsage vacío estático () {
System.out.println (“Uso: java SimpleChat.java listening_port target_IP target_port”);
System.exit (1);
}
}
Receiver.java
importar java.io.BufferedReader;
import java.io.IOException;
importar java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
receptor público de clase {
privado booleano isRunning = true;
receptor público (int listeningPort) lanza IOException {
Receptor ejecutable T = nuevo Ejecutable () {
public void run () {
ServerSocket serverSocket;
tratar {
serverSocket = nuevo ServerSocket (listeningPort);
Socket clientSocket = serverSocket.accept ();
BufferedReader in = new BufferedReader (new InputStreamReader (clientSocket.getInputStream ()));
while (isRunning) {
tratar {
System.out.println (in.readLine ());
} captura (IOException e) {
// TODO Bloque catch generado automáticamente
e.printStackTrace ();
}
}
} catch (IOException e1) {
// TODO Bloque catch generado automáticamente
e1.printStackTrace ();
}
}
};
nuevo Thread (receiverT) .start ();
}
parada del vacío público () {
isRunning = false;
}
}
Sender.java
import java.io.IOException;
importar java.io.PrintWriter;
import java.net.Socket;
importar java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
clase pública Sender {
privado booleano isRunning = true;
Lista privada volátil msgs;
public Sender (String username, String targetIP, int targetPort) lanza InterruptedException, UnknownHostException, IOException {
msgs = Collections.synchronizedList (new ArrayList ());
Runnable senderT = new Runnable () {
public void run () {
tratar {
Socket socket = nuevo Socket (targetIP, targetPort);
PrintWriter out = new PrintWriter (socket.getOutputStream (), true);
while (isRunning) {
sincronizado (msgs) {
Iterador it = msgs.iterator ();
while (it.hasNext ()) {
out.println (username + “:” + it.next ());
}
// Borrar mensajes para enviar
msgs.clear ();
}
}