يُعرف مقبس Java (المقبس) أيضًا باسم "Socket" ، والذي يصف عناوين IP ومنافذه ، وهو مقبض لسلسلة اتصال. عادةً ما تقوم التطبيقات بتقديم طلبات أو تجيب على طلبات الشبكة عبر "مآخذ".
استخدم المقبس لتحقيق التواصل بين العديد من العملاء ونفس العميل ؛ أولاً ، يتصل العميل بالخادم لإرسال رسالة ، ويقوم الخادم بمعالجة الرسالة بعد تلقي الرسالة ، ثم الرد على العميل على رسالة بعد الانتهاء منها. لقد كتبت رمزًا تم تنفيذه بواسطة الخادم والعميل من خلال تفكيري الخاص ، على أمل أن أتعلم من الجميع وإحداث تقدم معًا.
رمز الخادم
/** * Socket Server * الوصف الوصف: * *///خادم الفئة العامة {/** * إدخال * * param args * throws ioException */public static void main (string [] args) يلقي iOexcept ServersOcket (port) ؛ system.out.println ("انتظر الاتصال بالعميل ...") ؛ بينما (صحيح) {// يحاول الخادم تلقي طلبات الاتصال من مآخذ أخرى. طريقة قبول الخادم هي مقبس مقبس الحظر = server.accept () ؛/*** خادمنا يتولى طلبات اتصال العميل بشكل متزامن. في كل مرة نتلقى فيها طلب اتصال من العميل ، * يجب علينا أولاً التواصل مع العميل الحالي قبل معالجة طلب الاتصال التالي. سيؤثر هذا بشكل خطير على أداء البرنامج عندما يكون هناك المزيد من التزامن. * تحقيقًا لهذه الغاية ، يمكننا تغييره إلى المعالجة غير المتزامنة التالية للتواصل مع العميل* /// في كل مرة يتم استلام مقبس ، يتم إنشاء مؤشر ترابط جديد للتعامل معه لمؤشر ترابط جديد (مهمة جديدة (مقبس)). ابدأ () ؛} // server.close () ؛ Task (Socket Socket) {this.socket = socket ؛} @override public void run () {try {handlersocket () ؛} catch (استثناء e) {e.printstacktrace () ؛ inputStream وقراءة المعلومات التي يرسلها العميل من IT/*** عند تلقي البيانات من إدخال المقبس ، فإن القراءة قليلاً مثل ما سبق معقدة للغاية. * في بعض الأحيان ، سنتغير إلى استخدام BufferedReader لقراءة سطر واحد في وقت واحد * * تقرأ طريقة القراءة لـ Bufferreader سطرًا واحدًا في كل مرة. تم حظر هذه الطريقة. لن يستمر البرنامج في التنفيذ حتى يقرأ خطًا من البيانات. * إذن متى ستقرأ القراءة خطًا؟ لن تعتقد طريقة ReadLine أنه تمت قراءة سطر ، وسيقوم * بإنهاء الحظر والسماح للبرنامج بالاستمرار في التنفيذ. * لذلك عندما نستخدم خط القراءة BufferredReader لقراءة البيانات ، يجب أن نتذكر أن تكتب فواصل الأسطر في دفق الإخراج المقابل (* سيتم وضع علامة تلقائيًا كنهاية بعد انتهاء الدفق ، ويمكن التعرف على خط القراءة). بعد فترات كسر خطوط الخط ، يجب أن نتذكر أن نتدفق إذا لم يتم إغلاق دفق الإخراج على الفور ، * عندها فقط ، يمكن كتابة البيانات حقًا من المخزن المؤقت. */bufferedReader BR = جديد bufferedReader (new inputStreamReader (socket.getInputStream () ، "utf -8")) ؛ stringbuilder sb = new stringbuilder () من sb.append (temp.substring (0 ، index)) ؛ break ؛} sb.append (temp) ؛} system.out.println ("نموذج عميل [المنفذ:" + socket.getport () + "] محتوى الرسالة:" + sb.toString ()) "utf-8") ؛ writer.write (string.format ("hi ، ٪ d. السماء مشرقة والهواء واضح ، الرياح سلسة!" ، socket.getport ()))) ؛ الكاتب. بنجاح ") ؛ br.close () ؛ socket.close () ؛}}}رمز العميل
استيراد java.io.inputstreamreader ؛ استيراد java.io.outputstreamwriter ؛ استيراد java.io.riader ؛ استيراد java.io static void main (string [] args) {// فتح ثلاثة عملاء ، يمثل مؤشر ترابط واحد عميلًا لـ (int i = 0 ؛ i <3 ؛ i ++) {new thread (new RunNable () {@@over rot () client.client.getlocalport ()))) ؛ client.receive () ؛} catch (استثناء e) {E.PrintStackTrace () ؛}}}). start () ؛ 8899) ؛}}/** port) ؛ system.out.println ("العميل [المنفذ:" + client.getlocalport () + "] قم بإنشاء اتصال مع الخادم ...") ؛} عميل المقبس الخاص ؛ كاتب خاص ؛/** * أرسل رسالة * @param msg * athrows استثناء */public void send (سلسلة msg) يلقي استثناء {بعد تأسيس التوصيل ، يمكنك كتابة البيانات إذا the the the the the the outputStreamWriter (client.getOutputStream () ، "utf-8") ؛} الكاتب. write (msg) ؛ writer.write ("eof/n") ؛ writer.flush () ؛ // بعد الكتابة ، تذكر أن تنطلق system.out.println ("client [port:" + client.getlocalport () + تلقي () رمي الاستثناء {// اقرأ بعد كتابة القارئ القارئ = جديد inputStreamReader (client.getInputStream () ، "UTF-8") ؛ // قم بتعيين الوقت لتلقي البيانات إلى 10 ثوان عميل. ! = -1) {sb.append (سلسلة جديدة (chars ، 0 ، len)) ؛} system.out.println ("client [port:" + client.getlocalport () + "] تم استلام الرسالة ، المحتوى:بعد ذلك ، دعونا نحاكي:
1. قم بتشغيل الخادم أولاً
2. ثم قم بتشغيل العميل (افتح ثلاثة طلبات عميل)
للتظاهر ، أستخدم أداة Eclipse على الخادم وأداة Idea Intellij على العميل. في هذا الوقت ، يمكنك رؤية الرسالة التي طبعها العميل على وحدة التحكم
يمثل رقم المنفذ عميلًا. دعونا نلقي نظرة على الرسالة التي طبعها الخادم على وحدة التحكم.
لخص
ما سبق هو كل محتوى هذه المقالة حول مقبس برمجة Java الذي يقوم بتنفيذ العديد من العملاء للاتصال بنفس رمز الخادم. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة وسيقوم المحرر بالرد على الجميع في الوقت المناسب.