一. 服务端代码 :
import java.io.*; import java.net.*; clase pública UDPechoserver {private estático final int echomax = 255; // El tamaño máximo de ECHO datagram public static void main (string [] args) lanza ioexception {int servport = 5500; // puerto de servidor datagramsocket socket = nuevo datagramsocket (servport); Paquete de dataGrampacket = nuevo DataGrampacket (nuevo byte [Echomax], Echomax); while (true) {// ejecutar para siempre, recibir y hacer eco de datagrams Socket.receive (paquete); // Recibir paquete de Client System.out.println ("Manejo del cliente en" + Packet.getAddress (). Gethostaddress () + "en el puerto" + paquete.getport ()); socket.send (paquete); // Enviar el mismo paquete de regreso al cliente Packet.SetLength (Echomax); // Restablecer la longitud para evitar la reducción del búfer}/ * no alcanzado */}}二. 客户端代码 :
import java.net.*; import java.io.*; clase pública UDPeChoclientTimeOut {private static final int timeOut = 3000; // Resen Tiempo de espera (MilliseConds) Private estático final int maxtries = 5; // Máximo retransmisiones pública estática void main (string [] args) arroja ioexception {inetAddress serverAddress = inetaddress.getByName ("127.0.0.1"); // dirección del servidor int servport = 5500; // puerto del servidor // convertir la cadena de argumento a bytes utilizando el byte de codificación predeterminado [] byTESTOSEND = "HI, World" .getBytes (); Datagramsocket socket = new DataGramSocket (); socket.setSotimeOut (tiempo de espera); // El tiempo de bloqueo de recepción máxima (milisegundos) // enviando paquetes datagrampacket sendPacket = new DataGrampacket (ByTestosend, ByTestosend.Length, ServerAddress, Servport); DataGrampacket recibePacket = // Recibir paquete nuevo DataGrampacket (nuevo Byte [byTestosend.length], byTestosend.length); int intenta = 0; // Los paquetes pueden perderse, por lo que tenemos que seguir intentando boolean recibido -resonse = false; do {Socket.send (SendPacket); // Enviar la cadena de echo Try {Socket.Receive (RecibePacket); // intento echo de recepción de respuesta if (! RecibePacket.getAddress (). Equals (ServerAddress)) {// check // Source New IoException ("Paquete recibido de una fuente desconocida"); } RecibeResponse = True; } catch (interruptedioException e) {// No obtuvimos nada intenta += 1; System.out.println ("cronometrado", + (maxtries - intenta) + "más intentos ..."); }} while ((! RecibeResponse) && (intenta <maxtries)); if (RecibeResponse) {System.out.println ("Recibido:" + nueva cadena (recibePacket.getData ())); } else {System.out.println ("Sin respuesta - renunciando."); } socket.close (); }}上述代码的 UDP 服务端是单线程 一次只能服务一个客户端。 一次只能服务一个客户端。
以上就是本文的全部内容 , 查看更多 java 的语法 , 大家可以关注 : 《pensando en java 中文手册》、《 jdk 1.7 参考手册官方英文版》、《 jdk 1.6 api java 中文参考手册》、《 jdk 1.5 api java 中文参考手册》 也希望大家多多支持武林网。 也希望大家多多支持武林网。