مقدمة فئة جافا ذات الصلة
datagramsocket
public class DatagramSocket extends Object
يمثل هذه الفئة مقبسًا يستخدم لإرسال واستقبال حزم Datagram.
مآخذ بيانات DataGram هي نقاط إرسال أو تلقي خدمات توصيل الحزم. تتم معالجة كل حزمة يتم إرسالها أو استلامها على مقبس بيانات وتوجيهها بشكل منفصل. قد تختار حزم متعددة تم إرسالها من جهاز إلى آخر طرقًا مختلفة أو قد تصل إلى أوامر مختلفة.
يتم دائمًا تمكين إرسال Broadcast UDP على DataGramSocket. من أجل تلقي حزم البث ، يجب أن تكون DataGramSocket مرتبطة بعنوان بطاقة البدل. في بعض التطبيقات ، يمكن أيضًا استلام حزم البث عند ربط عنوان أكثر تحديدًا.
يمكن إرسال البيانات واستلامها من خلال إرسال وتلقي DataGramSocket.
public void receive(DatagramPacket p) throws IOException
تلقي حزم Datagram من هذا المقبس. عند إرجاع هذه الطريقة ، يتم ملء المخزن المؤقت لـ Datagrampacket بالبيانات المستلمة. تحتوي حزمة DataGram أيضًا على عنوان IP للمرسل ورقم المنفذ على جهاز المرسل.
هذه الطريقة تحظر حتى يتم استلام بيانات البيانات. يحتوي حقل الطول لكائن حزمة Datagram على طول المعلومات المستلمة. إذا كانت المعلومات أطول من طول الحزمة ، فسيتم اختصار المعلومات
في حالة وجود مدير أمان ولم تسمح طريقة CheckAccept لمدير الأمان بإجراء عملية الاستقبال ، فلا يمكن استلام الحزمة.
المعلمة:
P-Satagrampacket لوضع البيانات الواردة.
يرمي:
ioException - في حالة حدوث خطأ I/O.
SockettimeOutException - إذا تم استدعاء SetSotimeout سابقًا وانتهت قيمة المهلة.
portunreachable - قد يرمي عند توصيل المقبس بالهدف الذي لا يمكن الوصول إليه حاليًا. لاحظ أنه ليس هناك ما يضمن إلقاء الاستثناء.
incluctionBlockingModeException - إذا كان لهذا المقبس قناة مرتبطة وكانت القناة في وضع عدم الحظر.
public void send(DatagramPacket p) throws IOException
إرسال حزم البيانات من هذا المقبس. يحتوي DataGrampacket على معلومات تشير إلى: البيانات المراد إرسالها وطولها وعنوان IP للمضيف البعيد ورقم المنفذ للمضيف البعيد
في حالة وجود مدير أمان ولم يكن المقبس غير متصل حاليًا بالعنوان البعيد ، فإن هذه الطريقة تقوم أولاً ببعض اختبارات الأمان. أولاً ، إذا كانت P.GetAddress () إذا كانت قيمة التعبير خاطئة ، فسيتم استخدام هذه الطريقة لاستدعاء طريقة CheckConnect الخاصة بمدير الأمان باستخدام P.GetAddress (). Gethostaddress () و P.GetPort () كمعلمات. إذا لم يتم السماح بالعملية ، فإن كل مكالمة إلى طريقة مدير الأمان ستؤدي إلى وجود أمان.
المعلمة:
p-datagrampacket ليتم إرسالها.
يرمي:
ioException - في حالة حدوث خطأ I/O.
SecurityException - إذا كان مدير الأمن موجودًا ولا تسمح CheckMulticastic أو CheckConnect بإرسالها.
portunreachable - قد يرمي عند توصيل المقبس بالهدف الذي لا يمكن الوصول إليه حاليًا. لاحظ أنه ليس هناك ما يضمن إلقاء الاستثناء.
incluctionBlockingModeException - إذا كان لهذا المقبس قناة مرتبطة وكانت القناة في وضع عدم الحظر.
Datagrampacket
public final class DatagramPacket extends Object
يمثل هذا النوع حزم Datagram UDP ، والتي يتم استخدامها لتنفيذ خدمات توصيل الحزم بدون اتصال
طريقة البناء:
DatagramPacket(byte[]buf,intlength)
بناء datagrampacket لتلقي حزم البيانات من الطول
DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
بناء حزم Datagram لإرسال حزم الطول إلى رقم المنفذ المحدد على المضيف المحدد
مثال على نظام دردشة مجموعة UDP
UDP متصل بدون اتصالات. تتمثل الدردشة الجماعية في إرسال البيانات إلى عنوان البث (عنوان البث) ، بحيث يتلقى الجميع رسالة ؛ باستخدام طريقة مؤشر الترابط ، ابدأ مؤشر ترابط المرسل وخيط جهاز الاستقبال ، يقرأ المرسل إدخال لوحة المفاتيح عند الإخراج ، ويقرأ جهاز الاستقبال معلومات الإدخال ويعرضه.
مرسل
udpsender.java
package cn.xidian.socket ؛ استيراد java.io.bufferedReader ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstreamreader ؛ استيراد java.net.datagrampacket ؛ {try {// إنشاء datagramsocket socket udp = datagramsocket () ؛ // قم بإعداد حزمة البيانات لإرسال // اقرأ الإدخال من إدخال النظام المخزن المؤقت في = new Bufferreader (New InputStreamReader (system.in)) ؛ String Line = en ((line = in.readline)! تحتاج الدردشة الجماعية إلى كتابة عنوان البث ، على سبيل المثال: 192.168.137.255Datagrampacket Data = New Datagrampacket (line.getbytes () ، line.getbytes (). length ، inetaddress.getbyname ("127.0.0.1") ، 9090) socketsocket.close () ؛} catch (ioException e) {E.PrintStackTrace () ؛}}}المتلقي
udpreceiver.java
package cn.xidian.socket ؛ استيراد java.io.ioException ؛ استيراد java.net.datagrampacket ؛ استيراد java.net.datagramsocket ؛ الفئة العامة udpreceiver تمديد مؤشر ترابط {override public run () {try {// create udp service and beath toold dateagock. بايت [] temp = new byte [1024] ؛ datagrampacket data = datagrampacket جديد (temp ، temp.length) ؛ flag boolean = true ؛ data.getAddress (). gethostname () ؛ system.out.println (senderHostName+"("+senderaddress+")"+"يقول:"+سلسلة جديدة (temp ، 0 ، data.getLength ())) ؛الطريقة الرئيسية
udpmain.java
حزمة cn.xidian.socket ؛ فئة عامة udpmain {public static void main (string [] args) {// start udpreceiver thread udpreceiver receiver = new udpreceiver () ؛نتائج الاختبار
يقرأ طرف الإدخال إدخال لوحة المفاتيح كمخرج ، ويتلقى المستلم الرسالة ويعرض IP للمرسل واسم المضيف.
لخص
ما سبق هو كل محتوى هذه المقالة حول برمجة Java باستخدام UDP لإنشاء أمثلة رمز نظام الدردشة الجماعية. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!