كيف يعمل Boost.asio أي منفذ هو تطبيق الخادم الخاص بي الاستماع؟

StackOverflow https://stackoverflow.com/questions/578794

  •  06-09-2019
  •  | 
  •  

سؤال

إنه غريب بعض الشيء بالنسبة لي أن Boost.asio لا يستخدم المفهوم الأساسي عند الاتصال بالعميل المتصل بالخادم - باستخدام عنوان IP والمنفذ. قد أكون أنا noobie قليلا في دفعة - وأنا أقبل ذلك - ولكن على أي حال أنا لا أفهم.
لذلك، لدي رمز مثل هذا للحصول على عميل متصل بالخادم على LocalHost:


        boost::asio::io_service io_service;
        tcp::resolver resolver(io_service);
        tcp::resolver::query query("localhost", "daytime"); 
        tcp::resolver::iterator endpoint_iterator = resolver.resolve(query); 
        tcp::resolver::iterator end;

        tcp::socket socket(io_service);
        boost::system::error_code error = boost::asio::error::host_not_found;
        while(error && endpoint_iterator != end) {
            socket.close();
            socket.connect(*endpoint_iterator++, error);
        }

يستخدم Windows في Winsock 2.0 اثنين من المعلمات - IP والمنفذ - لتحديد الخادم.
لذلك، فإن Qurestion هو - كيف يكتشف ASIO بالضبط المنفذ الذي يستمع الخادم إلى الاتصالات؟ هل يقوم بمسح جميع المنافذ؟ وإذا كان الأمر كذلك، فما سيحدث إذا استمعت خادمتان إلى منافذ مختلفة في نفس الوقت؟

هل كانت مفيدة؟

المحلول

أنت تخبره أنك تريد الاتصال باللغة المحلية على المنفذ المستخدمة من قبل خدمة النهار. سوف يبحث عن رقم المنفذ المناسب في ملف الخدمات (عادة C: Windows System32 Drivers Etc ETC ITC ITC ضمن Windows، أعتقد / إلخ / خدمات ضمن UNIX). يمكنك أيضا استخدام رقم منفذ صريح هناك.

نصائح أخرى

يحاول،

tcp::resolver::query query("localhost", boost::lexical_cast<string>(port));//assuming port is an int

للإجابة على سؤالك، أذكر أنك تبدأ الخادم على المنفذ 13. يحدث هذا هو المنفذ الذي يقوم بتشغيل خدمة Linux النهار (http://www.sorgonet.com/linux/linuxdaemons/). وبعد وبالتالي، يتمكنوا في وقت لاحق من استخدام الاستعلام ("المحلي"، "النهار") بدلا من تحديد المنفذ.

افتح NetCAT الاستماع على المنفذ 13 على LocalHost، سيقبل اتصال التجريبي. اكتب بعض Blabla عند الاتصال وسترى الإخراج في البرنامج التجريبي لتشغيل NetCAT، تشغيل: NC -L -P 13

شبابيك؟ لا netcat؟ تثبيت cygwin، وإضافة netcat

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top