一:服务端代码:
导入java.io*;导入Java.net。*;公共类Udpechoserver {私有静态最终int echomax = 255; //回声数据报的最大大小public static void main(string [] args)抛出ioexception {int servport = 5500; //服务器端口datagramsocket套接字= new datagramsocket(servport); datagrampacket packet = new datagrampacket(new byte [echomax],echomax); while(true){//永远运行,接收和回声datagrams socket.receive(packet); //从client system.out.println接收数据包(“ packet.getAddress()。 socket.Send(packet); //将相同的数据包发送回client packet.setlength(echomax); //重置长度以避免缩小缓冲区}/ *未达到 */}}二:客户端代码:
导入Java.net。*;导入java.io*;公共类UdpechoclientTimeOut {私有静态final int timout = 3000; //重新启动超时(毫秒)私有静态最终int maxtries = 5; //最大重传public public static void main(string [] args)抛出ioexception {inetaddress serveraddress = inetaddress.getByName(“ 127.0.0.0.1”); //服务器地址int servport = 5500; //服务器端口//使用默认编码字节[] bytestosend =“ hi,world” .getBytes(); datagramsocket socket = new Datagramsocket(); socket.setSotimeout(超时); //最大接收阻塞时间(毫秒)//发送数据包datagrampacket sendpacket = new datagrampacket(bytestosend,bytestosend.length,serveraddress,serveraddress,servport); datagrampacket receedpacket = //接收数据包新datagrampacket(new byte [bytestosend.length],bytestosend.length); int tries = 0; //数据包可能会丢失,因此我们必须继续尝试boolean receedResponse = false; do {socket.send(sendpacket); //发送回声字符串尝试{socket.receive(recectionPacket); //尝试回声回复接收,如果(!recectionpacket.getAddress()。等equals(serverAddress)){// check // source抛出新的ioexception(“从未知来源接收到数据包”); } receedResponse = true; } catch(InterruptedIoexception e){//我们没有得到任何尝试 += 1; system.out.println(“ timed out”, +(maxtries -tries) +“更多尝试...”); }} while((!接收者)&&(tries <maxTries)); if(receedResponse){system.out.println(“接收:” + new String(recectionPacket.getData())); } else {system.out.println(“无响应 - 放弃。”); } socket.close(); }}}上述代码的udp服务端是单线程,一次只能服务一个客户端。,一次只能服务一个客户端。
以上就是本文的全部内容,java的语法,大家可以关注:《在Java jdk 1.7 参考手册官方英文版》、《 jdk 1.6 api java jdk jdk jdk jdk jdk 1.5 api java 中文参考手册》,也希望大家多多支持武林网。,也希望大家多多支持武林网。