هنا شخصان يتواصلان. يتم الحكم عليه على أساس IP. لا توجد مشكلة بين
انسخ رمز الكود كما يلي:
import java.io.BufferedReader;
import java.io.IOException;
استيراد java.io.InputStreamReader؛
import java.net.DatagramPacket;
import java.net.DatagramSocket;
استيراد java.net.InetAddress؛
import java.net.SocketException;
import java.net.UnknownHostException;
الطبقة العامة أنا {
public static void main(String[] args) يلقي IOException {
new ReciveThread().start();// يجب وضع مستمع التكوين في المقدمة
new SendInfo().main(args);
}
}
فئة إرسال المعلومات {
public static void main(String[] args) يلقي IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
سلسلة str = فارغة؛
خطوط السلسلة = ""؛
بينما ((str = bf.readLine()) != null) {
خطوط += شارع؛
إذا (str.equals("موافق")) {
إرسال (خطوط)؛
خطوط = ""؛
}
إذا (str.equals("وداعا")) {
bf. Close(); // يجب إضافة فاصل، وإلا سيكون هناك فاصل لإشارة الرجوع إلى السطر؛
}
}
}
إرسال باطل ثابت (سلسلة سلسلة) {
// برنامج شبكة UDP
DatagramSocket ds = null;
DatagramPacket dp = null;
يحاول {
ds = new DatagramSocket(3000);// افتح رقم المنفذ
} قبض على (SocketException ه) {
// TODO كتلة الالتقاط التي تم إنشاؤها تلقائيًا
printStackTrace();
}
يحاول {
byte[] ip = new byte[] { (byte) 10, 1, 1, (byte) 200 };
dp = new DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByAddress(ip), 9000);//faso
} قبض على (UnknownHostException e) {
// TODO كتلة الالتقاط التي تم إنشاؤها تلقائيًا
printStackTrace();
}
يحاول {
ds.send(dp);
System.out.println("إرسال النجاح");
} قبض (IOException ه) {
// TODO كتلة الالتقاط التي تم إنشاؤها تلقائيًا
printStackTrace();
}
ds.Close();
}
}
فئة ReciveThread تمتد الموضوع {
تشغيل الفراغ العام () {
بينما (صحيح) {
DatagramSocket ds = null;
بايت[] buf = بايت جديد[1024];
DatagramPacket dp = null;
يحاول {
ds = new DatagramSocket(9000);// افتح المنفذ
} قبض على (SocketException ه) {
// TODO كتلة الالتقاط التي تم إنشاؤها تلقائيًا
printStackTrace();
}
dp = new DatagramPacket(buf, 1024);
يحاول {
ds.receive(dp);
} قبض (IOException ه) {
// TODO كتلة الالتقاط التي تم إنشاؤها تلقائيًا
printStackTrace();
}
String str = new String(dp.getData(), 0, dp.getLength()) + "من"
+ dp.getAddress().getHostAddress() + ":port" + dp.getPort();
System.out.println(str);
ds.Close();
}
}
}