1. نظرة عامة
فئة المقبس هي الفئة الأساسية لـ Java لأداء عمليات TCP العميل. تستخدم هذه الفئة نفسها رمزًا للتواصل من خلال مكدس TCP المحلي لنظام التشغيل المضيف. ستقوم طرق فئة المقبس بإنشاء وتدمير الاتصالات وتعيين خيارات المقبس المختلفة.
فئة Serversocket هي الفئة الأساسية لـ Java لأداء عمليات من جانب الخادم. تعمل هذه الفئة على الخادم وتستمع لاتصالات TCP الواردة. يستمع كل خادم مقبس لمنفذ الخادم. عندما يحاول عميل المضيف عن بُعد الاتصال بهذا المنفذ ، يتم تفعيل الخادم ويعيد كائن المقبس العادي الذي يمثل المقبس بين المضيفين.
2. ما هو TCP؟
TCP هو بروتوكول اتصالات النقل الموجه نحو الاتصال ، موثوق به ، بايت. يتم تقسيم اتصال TCP إلى العميل والخادم ، والكائنات المقابلة هي المقبس والخادم على التوالي.
عندما يحتاج الكمبيوتر إلى الاتصال بجهاز كمبيوتر بعيد آخر ، يتيح له بروتوكول TCP إنشاء اتصال: رابط افتراضي لإرسال البيانات واستلامها. يعد بروتوكول TCP مسؤولاً عن جمع حزم المعلومات وإرسالها بترتيب مناسب ، ثم عودتها بشكل صحيح بعد استلامها في الطرف المتلقي. من أجل التأكد من أن حزمة البيانات دقيقة أثناء الإرسال ، يستخدم TCP آلية إعادة الإرسال: عندما يرسل كيان اتصال رسالة إلى كيان اتصال آخر ، فإنه يحتاج إلى تلقي معلومات تأكيد كيان آخر. إذا لم يتم تلقي معلومات تأكيد ، فستستقبل المعلومات المرسلة الآن مرة أخرى.
ثالثا. الاتصالات TCP
1. مُنشئ
تقوم فئة المقبس بتنفيذ مآخذ العميل ، ويمكن للمنشئ تحديد المضيف والمنفذ الذي تريد الاتصال به. يمكن تحديد المضيف على أنه inetaddress أو سلسلة ، ويتم تحديد المنفذ دائمًا كقيمة int بين 0 و 65535.
Socket S = مقبس جديد ("127.0.0.1" ، 10001) ؛ // قم بإنشاء مقبس دفق وقم بتوصيله برقم المنفذ المحدد على المضيف المحددفئة Serversocke تنفذ مآخذ الخادم. ينتظر مقبس الخادم حتى يتم تمرير الطلب عبر الشبكة ، ويقوم بإجراء بعض العمليات بناءً على الطلب ثم يعيد النتيجة إلى الطالب.
Serversocket SS = Serversocket (10001) ؛ // قم بإنشاء مقبس خادم مرتبط بمنفذ معين
2. مثال: نسخ ملف TCP
عميل:
الطبقة العامة clientDemo {public static void main (string [] args) يلقي unknownhostexception ، ioException {socket s = new Socket ("127.0.0.1" ، 10004) ؛ BufferedReader buf = new Bufferreader (New Filereader (" line = null ؛/*printWriter out = new printWriter (s.getOutputStream () ، true) ؛ بينما ((line = buf.ReadLine ())! = null) {out.println (line) ؛ } */bufferedWriter Out = new BufferedWriter (New OutputStreamWriter (S.GetOutputStream ())) ؛ بينما ((line = buf.readline ())! = null) {out.write (line) ؛ out.newline () ؛ out.flush () ؛} s.shutdownoutput () ؛ bufferedReader in = new BufferedReader (new inputstreamreader (s.getinputStream ())) ؛ str = in.readline () ؛ system.out.println (str) ؛ s.close () ؛ buf.close () ؛}}جانب الخادم:
الفئة العامة serverDemo {public static void main (string [] args) رمي ioException {serversocket ss = new serversocket (10004) ؛ socket s = ss.accept () filewRiter ("C: //users//administrator//desktop//2.txt") ، true) ؛ بينما ((line = in.readline ())! = null) {buf.println (line) ؛ }*/bufferedWriter buf = new BufferedWriter (new filewriter ("c: //users//administrator//desktop//2.txt") ؛ PrintWriter (S.GetOutputStream () ، true) ؛ out.println ("نقل ناجح!") ؛ ss.close () ؛ buf.close () ؛}}4. تطبيق المقبس على التصفح
يمكننا كتابة جانب الخادم في Eclipse ثم الوصول إليه باستخدام المتصفح.
على سبيل المثال ، رمز جانب الخادم هو:
فئة عامة SocketServer {public static void main (string [] args) يلقي ioException {serversocket server = new ServersOcket (11000) ؛ COOKET CLIENT = SERVER.ACCEPT () ؛ printWriter out = new printWriter (client.getOutputStream () ، true) ؛ Out.println ("Hello!") ؛ server.close () ؛ }}ثم افتح IE Browser ، أدخل http://192.168.1.120:11000/ في العنوان (192.168.1.120 هو عنوان IP المحلي) ، والنتيجة هي
في التطبيقات العادية ، يصدر المتصفح طلبًا إلى خادم Tomacat للحصول على موارد مثل صور صفحة الويب. Tomca هو برنامج من جانب الخادم مكتوب في Java.
الآن نكتب جانب الخادم على النحو التالي:
فئة عامة SocketServer {public static void main (string [] args) يلقي ioException {serversocket server = new ServersOcket (11000) ؛ COOKET CLIENT = SERVER.ACCEPT () ؛ printWriter out = new printWriter (client.getOutputStream () ، true) ؛ BufferedReader في = جديد BufferEdReader (new inputStreamReader (client.getInputStream ())) ؛ خط السلسلة = فارغ ؛ بينما ((line = in.readline ())! = null) system.out.println (line) ؛ Out.println ("Hello!") ؛ server.close () ؛ }}ثم ، عند الوصول إلى المتصفح ، يمكنك أن ترى أن بيانات رأس الطلب المرسلة من المتصفح (العميل) إلى الخادم هي:
باستخدام المبادئ المذكورة أعلاه ، يمكننا كتابة برنامج من جانب المتصفح (العميل) على غرار IE من قبل أنفسنا. قم أولاً بإضافة مورد Demo.html إلى دليل تثبيت Tomcat C: /apache-tomcat-7.0.62/webapps/myweb ، ثم اكتب العميل ، الرمز كما يلي:
ClientDemo public clientDemo {public static void main (string [] args) يلقي unknownHostException ، ioException {socket s = new Socket ("192.168.1.120" ، 8080) ؛ printWriter out = new printWriter (s.getOutputStream () ؛ http/1.1 ") ؛ out.println (" قبول:*/*") ؛ out.println (" المضيف: 192.168.1.120:11000") ؛Out.println("Connection: keep-alive ") inputStreamReader (S.GetInputStream ()))) ؛ خط السلسلة = null ؛ // إرجاع ملف استجابة الخادم بينما ((line = in.readline ())! = null) {system.out.println (line) ؛} S.Close () ؛}}بعد ذلك ، ابدأ Tomcat. وهذا هو ، انقر نقرًا مزدوجًا فوق ملف startup.bat في c: /apache-tomcat-7.0.62/bin. ثم قم بتشغيل رمز العميل أعلاه ، ويمكنك رؤية بيانات الاستجابة التي يتم إرجاعها بواسطة Tomacat:
لخص
ما سبق هو مثال رمز كامل لاتصالات TCP في هذه المقالة حول برمجة شبكة Java ، وآمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى هذا الموقع:
أساسيات برمجة شبكة Java: اتصال أحادي الاتجاه
نموذج رمز لتنفيذ التوصيل المقبس في البرمجة Multithed Multired
شرح مفصل لكود نموذج مستهلك منتجات الاتصالات وانتظار آلية الاستيقاظ من جافا متعددة الخيوط
إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!