一:服務端代碼:
導入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 中文參考手冊》,也希望大家多多支持武林網。 ,也希望大家多多支持武林網。