一. 服务端代码:
importar java.io.*; importar java.net.*; classe pública udPechoserver {private static final int echomax = 255; // tamanho máximo do eco datagrama public static void main (string [] args) lança ioexception {int servport = 5500; // servidor porta datagramsocket soquete = new Datagramsocket (servport); Pacote de datagropgacket = novo datagroftacket (novo byte [echomax], echomax); while (true) {// executa para sempre, recebendo e ecoando datagramas soket.receive (pacote); // Receba pacote do cliente System.out.println ("Handling Client em" + packet.getAddress (). Gethostaddress () + "na porta" + packet.getport ()); Socket.send (pacote); // Envie o mesmo pacote de volta ao cliente Packet.setLength (Echomax); // Redefinir o comprimento para evitar encolher o buffer}/ * não atingido */}}二. 客户端代码:
importar java.net.*; importar java.io.*; classe pública udPechoclientTimeout {private Static final int timeout = 3000; // reenviar o tempo limite (milissegundos) private estático final int maxtries = 5; // máximo de retransmissões public estática void main (string [] args) lança ioexception {inetAddress serverAddress = inetaddress.getByName ("127.0.1"); // endereço do servidor int servport = 5500; // Porta do servidor // Converta a sequência de argumentos em bytes usando o byte de codificação padrão [] bytestosend = "oi, mundo" .getBytes (); Datagramsocket soquete = new Datagramsocket (); Socket.SetSotimeout (Timeout); // Tempo de bloqueio máximo de recebimento (milissegundos) // Enviando pacotes datagroppacket sendpacket = new DatagRaiftacket (bytestosend, bytestosend.length, serverAddress, servport); Datagropgacket Receberpacket = // Pacote de recebimento novo datagroppacket (novo byte [bytestosend.length], bytestosend.length); int tentativas = 0; // Os pacotes podem ser perdidos, por isso temos que continuar tentando Boolean RecedResponse = false; do {Socket.send (sendpacket); // Envie a string de eco, tente {socket.receive (recebapacket); // Tente Echo Responder Recepção if (! Receberpacket.getAddress (). Iguals (serverAddress)) {// check // LONGOUN THROW NOVO IOException ("Pacote recebido de uma fonte desconhecida"); } recebeu resposta = true; } catch (interrompedioException e) {// não obtivemos nada tenta += 1; System.out.println ("Timed Out", + (Maxtries - Tentam) + "mais tentativas ..."); }} while (! RecebriDResponse) && (tenta <maxtries)); if (RecebdResponse) {System.out.println ("Recebido:" + new String (Receberpacket.getData ())); } else {System.out.println ("Nenhuma resposta - desistindo."); } soket.close (); }}上述代码的 Udp 服务端是单线程 , 一次只能服务一个客户端。
以上就是本文的全部内容 , Java 的语法 , 大家可以关注 : : Pensando em Java 中文手册》、《 jdk 1.7 参考手册官方英文版》、《 jdk 1.6 api java 中文参考手册》、《 jdk 1.5 api java 中文参考手册》 , 也希望大家多多支持武林网。 也希望大家多多支持武林网。