2010-08-25 16 views
5

मैं उत्तर के लिए नेट खोज रहा हूं लेकिन मुझे पूरा उत्तर नहीं मिल रहा है।boost :: asio - एक विशिष्ट नेटवर्क इंटरफ़ेस को बाध्यकारी पर स्पष्टीकरण

परिदृश्य: मेरे पास क्लाइंट एपीआई और सर्वर है। एक सर्वर सर्वर से बात करने के लिए क्लाइंट एपीआई का उपयोग करता है। टीसीपी और यूडीपी दोनों क्लाइंट एपीआई और सर्वर के बीच संवाद करने के लिए उपयोग किया जाता है। यह सब एएसआईओ का उपयोग करके लिखा गया है।

क्लाइंट एपीआई सर्वर से टीसीपी के माध्यम से जुड़ता है, फिर टीसीपी के माध्यम से आदेश भेजता है और टीसीपी के माध्यम से प्रतिक्रिया प्राप्त करता है। क्लाइंट एपीआई एक यूडीपी पते को भी सुनता है जहां इसे लगातार वास्तविक समय डेटा प्राप्त होता है।

पर्यावरण WIN32 और WIN64 चलाने वाली मशीनों का मिश्रण है। सभी मशीनों में 2 नेटवर्क कार्ड भी हैं।

प्रश्न: मैं विशिष्ट स्थानीय नेटवर्क इंटरफेस के लिए अपने टीसीपी और यूडीपी कनेक्शन को 'पिन' करने में सक्षम होना चाहता हूं। मैंने कुछ जानकारी देखी है जो SO_BINDTODEVICE सॉकेट विकल्प के साथ-साथ पिछली पोस्ट या अन्य साइटों से बाइंड फ़ंक्शन पर चर्चा करती है।

क्या यह WIN32/64 वातावरण में ऐसा करना संभव है? यदि आप इस पर कुछ प्रकाश डाल सकते हैं, तो कुछ उदाहरण, या सहायक जो साइटें सहायक हैं, मैं वास्तव में इसकी सराहना करता हूं।

लिंक मैंने पाया:

  1. Using Linux, how to specify which ethernet interface data is transmitted on
  2. http://tuxology.net/2008/05/15/forcing-connections-through-a-specific-interface/
+0

यह स्पष्ट नहीं था एक विशिष्ट समाप्ति बिंदु को बाध्य कर सकते हैं मेरे लिए यदि आपने अपने 'Accepto बाध्यकारी कोशिश की है आर 'ओवरलोडेड कन्स्ट्रक्टरों में से एक का उपयोग करके एक विशिष्ट' एंडपॉइंट 'ऑब्जेक्ट करता है। क्या आपने कोशिश की है? –

+0

सैम - मैंने ओवरलोडेड कन्स्ट्रक्टर की कोशिश नहीं की है। मैं आज रात कोशिश करूँगा और आपको बता दूंगा। ऐसा लगता है कि इसे एक टीसीपी सर्वर के लिए चाल करना चाहिए। मैं यह एक टीसीपी क्लाइंट, udp क्लाइंट और udp सर्वर के लिए भी ऐसा करने की उम्मीद कर रहा हूं। यदि वे संभव हैं। क्या मैं उन पर बाइंड विधि का भी उपयोग कर सकता हूं? धन्यवाद, परिणाम पोस्ट करेंगे। – skimobear

+0

मैंने कुछ नमूना कोड के साथ नीचे एक उत्तर पोस्ट किया है, इसे एक शॉट दें और मुझे बताएं। –

उत्तर

8

आप का उपयोग कर उचित tcp::ip::acceptorconstructor

include <boost/asio.hpp> 

int 
main() 
{ 
    using namespace boost::asio; 
    io_service service; 
    ip::tcp::endpoint ep(
      ip::address::from_string("127.0.0.1"), 
      1234 
      ); 
    ip::tcp::acceptor acceptor( 
      service, 
      ep 
      ); 
} 
+0

सैम, मैंने इसे आजमाया और यह पूरी तरह से काम करता है। धन्यवाद। – skimobear

संबंधित मुद्दे