Aquí hay dos personas comunicándose. Se juzga en función de la IP. No hay problema entre ellos.
Copie el código de código de la siguiente manera:
importar java.io.BufferedReader;
importar java.io.IOException;
importar java.io.InputStreamReader;
importar java.net.DatagramPacket;
importar java.net.DatagramSocket;
importar java.net.InetAddress;
importar java.net.SocketException;
importar java.net.UnknownHostException;
clase pública Yo {
public static void main (String [] args) lanza IOException {
new ReciveThread().start();//El oyente de configuración debe colocarse al frente
nuevo SendInfo().main(args);
}
}
clase Enviar información {
public static void main (String [] args) lanza IOException {
BufferedReader bf = nuevo BufferedReader (nuevo InputStreamReader (System.in));
Cadena cadena = nulo;
Líneas de cadena = "";
mientras ((cadena = bf.readLine()) != nulo) {
líneas += cadena;
si (str.equals("ok")) {
enviar(líneas);
líneas = "";
}
si (str.equals("adiós")) {
bf.close(); // se debe agregar una interrupción; de lo contrario, habrá una interrupción de la señal de retorno de carro;
}
}
}
envío vacío estático (String str) {
// programa de red UDP
DatagramSocket ds = nulo;
Paquete de datagramas dp = nulo;
intentar {
ds = new DatagramSocket(3000);//Abre el número de puerto
} captura (SocketException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
intentar {
byte[] ip = nuevo byte[] { (byte) 10, 1, 1, (byte) 200 };
dp = nuevo DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByAddress(ip), 9000);//faso
} captura (UnknownHostException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
intentar {
ds.enviar(dp);
System.out.println("envío exitoso");
} captura (IOException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
ds.cerrar();
}
}
clase ReciveThread extiende el hilo {
ejecución pública vacía() {
mientras (verdadero) {
DatagramSocket ds = nulo;
byte[] buf = nuevo byte[1024];
Paquete de datagramas dp = nulo;
intentar {
ds = new DatagramSocket(9000);//Abrir el puerto
} captura (SocketException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
dp = nuevo paquete de datagramas (buf, 1024);
intentar {
ds.receive(dp);
} captura (IOException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
}
Cadena cadena = nueva cadena (dp.getData(), 0, dp.getLength()) + "de"
+ dp.getAddress().getHostAddress() + ":puerto" + dp.getPort();
System.out.println(cadena);
ds.cerrar();
}
}
}