一。服务端代码:
java.io.*をインポートします。 java.net。*;パブリッククラスudpechoserver {private static final int echomax = 255; // echo datagramの最大サイズpublic static void main(string [] args)throws ioexception {int servport = 5500; //サーバーポートデータグラムソケットsocket = new DatagramSocket(Servport); datagrampacketパケット= new datagrampacket(new byte [echomax]、echomax); while(true){//永遠に実行して、データグラムを受信してエコーしますsocket.receive(packet); //クライアントSystem.out.printlnからpacketを受信します( "" + packet.getAddress()。gethostAddress() + "on port" + packet.getport()); socket.send(packet); //同じパケットをクライアントpacket.setlength(echomax)に送り返します。 //バッファの縮小を避けるために長さをリセット}/ *届かない */}}二。客户端代码:
java.net。*; java.io.*をインポートします。パブリッククラスudpechoclienttimeout {private static final int timeout = 3000; //再送信タイムアウト(ミリ秒)プライベート静的最終int maxtries = 5; //最大再送信public static void main(string [] args)throws ioexception {inetAddress serverAddress = inetAddress.getByName( "127.0.0.1"); //サーバーアドレスint servport = 5500; //サーバーポート//引数文字列をデフォルトのエンコードバイト[] bytestosend = "hi、world" .getbytes()を使用して、引数文字列をバイトに変換します。 datagramsocket socket = new DatagramSocket(); socket.setsotimeout(Timeout); //最大受信ブロッキング時間(Milliseconds)// Packet Datagrampacket sendpacket = new Datagrampacket(bytestosend、bytestosend.length、serverAddress、servport); datagrampacket receivepacket = // packet new datagrampacket(new byte [bytestosend.length]、bytestosend.length); int tries = 0; //パケットが失われる可能性があるため、Boolean ReceiveResponse = falseを試してみる必要があります。 do {socket.send(sendpacket); // echo文字列を送信してください{socket.receive(receivepacket); // echo Reply Repomentive if(!receivePacket.getAddress()。equals(serverAddress)){// check //新しいioexception( "未知のソースからの受信パケット"); } receiveResponse = true; } catch(arturtedioexception e){//何も試みませんでした += 1; System.out.println( "Timed Out" +(maxtries- tries) + "more tries ..."); }} while((!receeceResponse)&&(tries <maxtries)); if(receiveResponse){system.out.println( "receece:" + new String(receivePacket.getData())); } else {system.out.println( "応答なし - あきらめます。"); } socket.close(); }}上述代码的udp服务端是单线程、一次只能服务一个客户端。
以上就是本文的全部内容、查看更多、查看更多java的语法、大家可以关注:shink javaでの思考中文手册》、《 jdk 1.7 参考手册官方英文版》、《 jdk 1.6 api java