一. 服务端代码:
นำเข้า Java.io.*; นำเข้า Java.net.*; ชั้นเรียนสาธารณะ UDPechoserver {ส่วนตัวคงที่ int echomax = 255; // ขนาดสูงสุดของ Echo Datagram โมฆะสาธารณะคงที่หลัก (สตริง [] args) พ่น IOException {int servport = 5500; // พอร์ตเซิร์ฟเวอร์ DataGramsocket Socket = ใหม่ DataGramSocket (Servport); DataGrampacket Packet = DataGampacket ใหม่ (BYTE ใหม่ [ECHOMAX], ECHOMAX); ในขณะที่ (จริง) {// รันตลอดไปรับและสะท้อนดาต้าแกรมซ็อกเก็ต receive (แพ็คเก็ต); // รับแพ็คเก็ตจากไคลเอนต์ System.out.println ("การจัดการไคลเอนต์ที่" + packet.getAddress (). gethostaddress () + "บนพอร์ต" + packet.getport ()); Socket.Send (แพ็คเก็ต); // ส่งแพ็คเก็ตเดียวกันกลับไปที่ไคลเอนต์แพ็คเก็ต SetLength (eChomax); // รีเซ็ตความยาวเพื่อหลีกเลี่ยงการหดบัฟเฟอร์}/ * ไม่ถึง */}}二. 客户端代码:
นำเข้า Java.net.*; นำเข้า Java.io.*; ชั้นเรียนสาธารณะ UDPechoclientTimeOut {ส่วนตัวคงที่ครั้งสุดท้าย Int TimeOut = 3000; // ส่งหมดเวลากลับ (มิลลิวินาที) ส่วนบุคคลสุดท้ายคงที่ maxtries = 5; // สูงสุด retransmissions โมฆะคงที่สาธารณะหลัก (String [] args) พ่น IOException {InetAddress ServerAddress = InetAddress.getByName ("127.0.0.1"); // ที่อยู่เซิร์ฟเวอร์ int servport = 5500; // พอร์ตเซิร์ฟเวอร์ // แปลงสตริงอาร์กิวเมนต์เป็นไบต์โดยใช้ไบต์การเข้ารหัสเริ่มต้น [] bytestosend = "hi, world" .getBytes (); DataGramSocket Socket = ใหม่ DataGramSocket (); Socket.setSotimeout (หมดเวลา); // เวลาการปิดกั้นสูงสุด (มิลลิวินาที) // ส่งแพ็คเก็ต DataGampacket sendPacket = DataGampacket ใหม่ (Bytestosend, Bytestosend.length, ServerAddress, Servport); DataGrampacket รับ packet = // การรับแพ็กเก็ตใหม่ DataGrampacket (BYTE ใหม่ [bytestosend.length], bytestosend.length); int พยายาม = 0; // แพ็คเก็ตอาจหายไปดังนั้นเราต้องลองบูลีนที่ได้รับการตอบสนอง = เท็จ ทำ {socket.send (sendpacket); // ส่งสตริง echo ลอง {socket.receive (รับแพ็คเก็ต); // พยายาม echo ตอบรับ if (! teedpacket.getAddress (). เท่ากับ (serveraddress)) {// ตรวจสอบ // แหล่งที่มาโยน ioexception ใหม่ ("ได้รับแพ็คเก็ตจากแหล่งที่ไม่รู้จัก"); } ได้รับ Response = true; } catch (interruptedioException e) {// เราไม่ได้รับอะไรเลย += 1; System.out.println ("หมดเวลา" + (maxtries - พยายาม) + "พยายามมากขึ้น ... "); }} ในขณะที่ ((! ได้รับการตอบสนอง) && (พยายาม <maxtries)); if (ได้รับการตอบสนอง) {system.out.println ("ได้รับ:" + สตริงใหม่ (teedpacket.getData ())); } else {system.out.println ("ไม่มีการตอบสนอง - ยอมแพ้"); } socket.close (); -上述代码的 UDP 服务端是单线程, 一次只能服务一个客户端。
以上就是本文的全部内容, 查看更多 Java 的语法, 大家可以关注: การคิดใน Java 中文手册》、《 Jdk 1.7 参考手册官方英文版》、《 JDK 1.6 API Java 中文参考手册》、《 JDK 1.5 API Java 中文参考手册》, 也希望大家多多支持武林网。也希望大家多多支持武林网。也希望大家多多支持武林网。也希望大家多多支持武林网。