कनेक्टर पर निम्नलिखित कोड क्रैश हो जाता है मेरे पास स्थानीय सर्वर से पोर्ट 4001 पर चलने वाला कोई सर्वर नहीं है और मुझे आश्चर्य है कि अगर इस क्रैश को रोकने के लिए कोई रास्ता नहीं है, तो सर्वर कुछ के लिए नहीं चल रहा है कारण अभी तक ग्राहक अभी भी सॉफ़्टवेयर को कुछ हद तक चल सकता है दूसरे शब्दों में, क्या यह देखने का एक तरीका है कि कोई सर्वर प्रोग्राम को दुर्घटनाग्रस्त होने के बिना मौजूद है या नहीं? यह कोड है रिज़ॉल्वर। रिसोल (क्वेरी) रिटर्न .end () एक वैध इटरेटर के बजाय यदि पोर्ट नहीं मिला है, तो आप इसे बहाल प्रलेखन से कॉल करने से पहले इटरेटर का परीक्षण कर सकते हैं: boost :: asio :: connect (s, iterator); आउटपुट के साथ: <प्री>
कनेक्टर से पहले: यह एप्लिकेशन रनटाइम को असामान्य तरीके से समाप्त करने का अनुरोध किया है। अधिक जानकारी के लिए कृपया एप्लिकेशन की सहायता टीम से संपर्क करें। प्रक्रिया ने 3 (0x3) निष्पादन समय वापस किया: 1.281 s जारी रखने के लिए कोई भी कुंजी दबाएं।
// // blocking_tcp_echo_client.cpp // ~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // कॉपीराइट (सी) 2003-2012 क्रिस्टोफर एम। कोहलॉफ़ (क्रिस कोहलहॉफ़ डॉट कॉम में) // / / बूस्ट सॉफ्टवेयर लाइसेंस, संस्करण 1.0 के तहत वितरित। (Http://www.boost.org/LICENSE_1_0.txt पर // फ़ाइल LICENSE_1_0.txt के साथ देखें या प्रतिलिपि देखें) # # शामिल करें & lt; cstdlib & gt; # शामिल करें & lt; cstring & gt; # शामिल करें & lt; iostream & gt; # शामिल करें & lt; boost / asio.hpp & gt; Boost :: asio :: ip :: tcp का उपयोग कर रहा है; Enum {max_length = 1024}; Int main (int argc, char * argv []) {// try // {// if (argc! = 3) // {// std :: cerr & lt; & lt; "उपयोग: अवरोधक_टीसीपी_चो_क्लंट & lt; होस्ट & gt; & lt; पोर्ट & gt; \ n"; // वापसी 1; //} boost :: asio :: io_service io_service; Tcp :: रिलावर रिज़ॉल्वर (io_service); // tcp :: रिज़ॉल्वर :: क्वेरी क्वेरी (टीसीपी :: वी 4 (), एजीआर [1], एजीआर [2]); Tcp :: रिजःवर :: क्वेरी क्वेरी (टीसीपी :: वी 4 (), "127.0.0.1", "4001"); Tcp :: रिजॉल्वर :: इटरेटर इटरेटर = रिज़ॉल्वर। रिसोल (क्वेरी); Tcp :: सॉकेट एस (io_service); Std :: cout & lt; & lt; "कनेक्टर से पहले:"; बढ़ावा :: एएसआईओ :: कनेक्ट (एस, इटरेटर); Std :: cout & lt; & lt; "कनेक्टर के बाद:"; नेमस्पेस एसटीडी का उपयोग करना; // स्ट्रेलन के लिए Std :: cout & lt; & lt; "संदेश दर्ज करें:"; चार अनुरोध [max_length]; Std :: cin.getline (अनुरोध, max_length); Size_t request_length = strlen (अनुरोध); Boost :: asio :: write (s, boost :: asio :: buffer (अनुरोध, request_length)); चार उत्तर [max_length]; Size_t answer_length = boost :: asio :: read (एस, बढ़ावा :: एएसओ :: बफर (उत्तर, अनुरोध_ लैंघ)); Std :: cout & lt; & lt; "उत्तर है:"; Std :: cout.write (उत्तर, उत्तर_ लैंबी); Std :: cout & lt; & lt; "\ N"; //} // catch (std :: exception & amp; e) // {// std :: cerr & lt; & lt; "अपवाद:" & lt; & lt; E.what () & lt; & lt; "\ N"; //} वापसी 0; }
बढ़ावा :: asio :: connect पर फेंकता है त्रुटि। इसलिए कोशिश {} ब्लॉक और कैच {} ब्लॉक जो कि टिप्पणी की गई है, क्रैशिंग के बजाय त्रुटि का पता लगाने के लिए उपयोगी होगा।
connect
No comments:
Post a Comment