UDP conectando dos computadoras
El uso del protocolo udp involucra principalmente dos clases: DatagramSocket, DatagramPacket
DatagramSocket: se usa para establecer la salida o entrada del paquete de datos, y la IP del constructor se usa para el receptor
DatagramPacket: utilizado para empaquetar datos, la IP del constructor se utiliza para el remitente
Puede comparar los métodos de envío de paquetes DatagramSocket y la empresa de mensajería que elija no afecta. la entrega del paquete; y DatagramPacket es Su paquete debe tener la dirección (IP) y el número de casa (puerto: número de puerto) escritos en él.
Para el siguiente programa, ejecute uno en cada una de las dos computadoras. Solo necesita cambiar la IP a la IP del receptor y el número de puerto al número de puerto de respaldo en su computadora (el número de puerto). de la computadora es 0 - 65535, 1024 y siguientes son sistemas, por lo que generalmente se recomienda usar números de puerto distintos de 1024)
import java.io.IOException; import java.net.DatagramPacket; .net.DatagramSocket; importar java.net.InetAddress; importar java.net.UnknownHostException; importar java.util.Scanner; clase pública Chat.Scanner; clase pública Chat { public static void main(String[] args) { DatagramSocket sendsocket = null; DatagramSocket receiceSocket = null; intente { sendsocket = new DatagramSocket(); receiceSocket = new DatagramSocket(8888, InetAddress.getByName("127.0.0.1")} catch (SocketException e) { e. (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); nuevo hilo(nuevo envío(sendsocket)).start() nuevo hilo(nuevo recibir(receiceSocket)). (); }}clase Enviar implementos Runnable{ DatagramSocket socket = null; public Send(DatagramSocket socket) { this.socket = socket } @Override public void run().@Override public void run() { byte[] buf = nuevo byte[1024]; paquete DatagramPacket = nulo; Escáner escáner = nuevo Escáner(System.in); while(true) { String data = scanner.nextLine(); if("over".equalsIgnoreCase(data)) { break; } buf = data.getBytes(); try { // IP del receptor y número de puerto paquete = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 9999 socket.send (paquete); } captura (UnknownHostException e) { e.printStackTrace( ); captura (IOException e) { e.printStackTrace() }}} escáner.close();
}}clase Recibir implementos Runnable{ DatagramSocket socket; public Recibir(DatagramSocket socket) { this.socket = socket }@Override public void run() { while(true) { byte[]buf = nuevo byte[1024]; = nuevo DatagramPacket(buf, buf.length); prueba { socket.receive(paquete } catch ( IOException e) { e.printStackTrace() }String text = new String(packet.getData(), 0, paquete.getLength()); Cadena ip = paquete.getAddress().getHostAddress(); if("over".equalsIgnoreCase(texto)) { break }System.out.println(ip+" : "+texto); socket.close(); }}
En el lado del remitente, especifique la IP de destino y el puerto en el objeto del paquete
DatagramSocket ds = new DatagramSocket();byte[] by = " hola,udp".close();
En el extremo receptor, especifique el puerto en el que desea escuchar
DatagramSocket ds = new DatagramSocket(10000);byte[] por = nuevo byte[ 1024];DatagramPacket dp = nuevo DatagramPacket(by,by.length()); ds.receive(dp);String str = new String(dp.getData(),0,dp.getLength());System. out.println( str+"--"+dp.getAddress());ds.close();.