นี่คือคนสองคนกำลังสื่อสารกัน มันถูกตัดสินตาม IP ไม่มีปัญหาระหว่าง
คัดลอกรหัสรหัสดังต่อไปนี้:
นำเข้า java.io.BufferedReader;
นำเข้า java.io.IOException;
นำเข้า java.io.InputStreamReader;
นำเข้า java.net.DatagramPacket;
นำเข้า java.net.DatagramSocket;
นำเข้า java.net.InetAddress;
นำเข้า java.net.SocketException;
นำเข้า java.net.UnknownHostException;
ชั้นเรียนสาธารณะฉัน {
โมฆะคงที่สาธารณะ main (String [] args) พ่น IOException {
ใหม่ ReciveThread().start();// ต้องวางตัวฟังการกำหนดค่าไว้ข้างหน้า
ใหม่ SendInfo().main(args);
-
-
คลาส SendInfo {
โมฆะคงที่สาธารณะ main (String [] args) พ่น IOException {
BufferedReader bf = BufferedReader ใหม่ (InputStreamReader ใหม่ (System.in));
สตริง str = null;
เส้นสตริง = "";
ในขณะที่ ((str = bf.readLine()) != null) {
เส้น += STR;
ถ้า (str.equals("ตกลง")) {
ส่ง(เส้น);
เส้น = "";
-
ถ้า (str.equals("ลาก่อน")) {
bf.close(); // ต้องเพิ่มตัวแบ่ง มิฉะนั้นจะเกิดการหยุดแคร่กลับ
-
-
-
โมฆะคงที่ส่ง (String str) {
// โปรแกรมเครือข่าย UDP
DatagramSocket ds = null;
DatagramPacket dp = null;
พยายาม {
ds = new DatagramSocket(3000);//เปิดหมายเลขพอร์ต
} จับ (SocketException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
พยายาม {
ไบต์ [] ip = ไบต์ใหม่ [] { (ไบต์) 10, 1, 1, (ไบต์) 200 };
dp = ใหม่ DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByAddress(ip), 9000);//faso
} จับ (UnknownHostException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
พยายาม {
ds.ส่ง(dp);
System.out.println("ส่งความสำเร็จ");
} จับ (IOException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
ds.ปิด();
-
-
คลาส ReciveThread ขยายเธรด {
โมฆะสาธารณะวิ่ง () {
ในขณะที่ (จริง) {
DatagramSocket ds = null;
ไบต์ [] buf = ไบต์ใหม่ [1024];
DatagramPacket dp = null;
พยายาม {
ds = new DatagramSocket(9000);//เปิดพอร์ต
} จับ (SocketException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
dp = DatagramPacket ใหม่ (buf, 1024);
พยายาม {
ds.รับ(dp);
} จับ (IOException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
สตริง str = สตริงใหม่ (dp.getData(), 0, dp.getLength()) + "จาก"
+ dp.getAddress().getHostAddress() + ":พอร์ต" + dp.getPort();
System.out.println(str);
ds.ปิด();
-
-
-