<पी> नेटवर्क संचार में सॉकेट त्रुटियाँ एक बहुत ही सामान्य घटना है और यह कनेक्शन स्थापना, डेटा ट्रांसमिशन और डिस्कनेक्शन सहित प्रक्रिया के कई चरणों में बढ़ सकती है। ये त्रुटियाँ नेटवर्क विफलताओं, कनेक्शन टाइमआउट, संसाधन सीमाओं या गलत कॉन्फ़िगरेशन सेटिंग्स जैसे कई कारकों के कारण हो सकती हैं। <पी> आइए "पेरर()" और "स्ट्रेरर()" फ़ंक्शंस का उपयोग करके सी प्रोग्रामिंग भाषा में सॉकेट त्रुटियों को पकड़ने के दो अलग-अलग तरीकों के बारे में चर्चा करें। सॉकेट त्रुटियाँ क्या हैं?
<पी> सी भाषा में सॉकेट त्रुटियों को मुख्य रूप से नकारात्मक रिटर्न मान या विशिष्ट त्रुटि कोड द्वारा पहचाना जाता है जो सॉकेट फ़ंक्शन द्वारा लौटाए जाते हैं। ये त्रुटि कोड त्रुटि की प्रकृति के बारे में बहुमूल्य जानकारी प्रदान करते हैं और समस्याओं का पता लगाने के साथ-साथ उन्हें हल करने में भी हमारी मदद करते हैं। यदि सॉकेट फ़ंक्शन नकारात्मक मान लौटाता है, तो इसका मतलब है कि निष्पादन के समय कुछ त्रुटि आई है। उदाहरण के लिए, यदि "सॉकेट ()" फ़ंक्शन सॉकेट बनाने में विफल रहता है, तो यह विफलता को इंगित करने के लिए एक नकारात्मक मान लौटा सकता है। इसकी जांच करके हम ऐसी त्रुटियों का आसानी से पता लगा सकते हैं और उन पर प्रतिक्रिया दे सकते हैं। <पी> नकारात्मक रिटर्न मानों के अलावा, सॉकेट फ़ंक्शंस "errno" वेरिएबल भी सेट करते हैं जो एक वैश्विक वैरिएबल है जो विशिष्ट त्रुटि कोड को संग्रहीत करता है जो सबसे हालिया सिस्टम या लाइब्रेरी फ़ंक्शन कॉल से जुड़ा हुआ है। "errno" वेरिएबल को "कार्य पी> <पी> #शामिल
#शामिल करें
#शामिल
#शामिल
#शामिल
#शामिल
पूर्णांक मुख्य ()
{
int सॉकेट डिस्क्रिप्टर;
struct sockaddr_in सर्वरएड्रेस;
// एक सॉकेट बनाएं
सॉकेटडिस्क्रिप्टर =सॉकेट (AF_INET, SOCK_STREAM, 0);
यदि (सॉकेट डिस्क्रिप्टर <0)
{
पेरर ("सॉकेट निर्माण विफल");
बाहर निकलें(EXIT_FAILURE);
} <पी> // सर्वर पता सेट करें
सर्वरएड्रेस.sin_family =AF_INET;
// आइए एक उदाहरण पोर्ट नंबर का उपयोग करें
सर्वरएड्रेस.सिन_पोर्ट =htons (7070);
// स्थानीय आईपी पता
सर्वरएड्रेस.sin_addr.s_addr =inet_addr ("127.0.0.1");
// सर्वर से कनेक्ट करें
यदि (कनेक्ट करें (सॉकेटडिस्क्रिप्टर, (स्ट्रक्चर सॉकएड्र * ) और सर्वरएड्रेस, साइजऑफ़ (सर्वरएड्रेस)) <0)
{
पेरर ("कनेक्शन विफल");
बाहर निकलें (EXIT_FAILURE);
}
// डेटा भेजें और प्राप्त करें
// आइए सॉकेट बंद करें
बंद करें (सॉकेटडिस्क्रिप्टर); <पी> वापसी 0;
} <पी> आउटपुट: पी> <पी> $ gcc err.c -o err
$ ./त्रुटि
कनेक्शन विफल:कनेक्शन अस्वीकृत <पी> स्पष्टीकरण: पी> <पी> इस प्रोग्रामिंग उदाहरण में, हम सॉकेट बनाने के लिए सॉकेट() फ़ंक्शन का उपयोग करते हैं। यदि लौटाया गया सॉकेट डिस्क्रिप्टर 0 से कम है, जो सॉकेट निर्माण के दौरान एक त्रुटि को इंगित करता है, तो यह संबंधित त्रुटि संदेश प्रदर्शित करने के लिए "पेरर ()" फ़ंक्शन का उपयोग करता है और यह प्रोग्राम से बाहर निकल जाता है। कनेक्शन स्थापित करने के लिए, यह सर्वर पता सेट करता है और कनेक्ट() फ़ंक्शन का उपयोग करके कनेक्ट करने का प्रयास करता है ताकि यह जांचा जा सके कि रिटर्न मान 0 से कम है या नहीं। कनेक्शन विफलता के मामले में, त्रुटि संदेश प्रदर्शित करने के लिए "पेरोर()" फ़ंक्शन का फिर से उपयोग किया जाता है और प्रोग्राम बाहर निकल जाएगा। इस दृष्टिकोण से, हम C भाषा में सॉकेट त्रुटियों को आसानी से पकड़ सकते हैं। यह हमें सूचनात्मक त्रुटि संदेश दिखाने और प्रोग्राम को ठीक से समाप्त करने की अनुमति देता है। <पी> प्रोग्रामिंग उदाहरण 2:पेरर() फ़ंक्शन का उपयोग करके सॉकेट त्रुटियों को पकड़ें पी> <पी> #शामिल
#शामिल करें
#शामिल
#शामिल
#शामिल
#शामिल
#शामिल
#शामिल
पूर्णांक मुख्य ()
{
int सॉकेट डिस्क्रिप्टर;
struct sockaddr_in सर्वरएड्रेस; <पी> // एक सॉकेट बनाएं
सॉकेटडिस्क्रिप्टर =सॉकेट (AF_INET, SOCK_STREAM, 0);
यदि (सॉकेट डिस्क्रिप्टर <0)
{
fprintf (stderr, "सॉकेट बनाने में विफल:%s \n", strerror (errno));
बाहर निकलें (EXIT_FAILURE);
} <पी> // सर्वर पता सेट करें
सर्वरएड्रेस.sin_family =AF_INET;
// आइए एक उदाहरण पोर्ट नंबर का उपयोग करें
सर्वरएड्रेस.सिन_पोर्ट =htons (7070);
// स्थानीय आईपी पता
सर्वरएड्रेस.sin_addr.s_addr =inet_addr ("127.0.0.1");
// अब हम सर्वर कनेक्शन के लिए प्रयास करते हैं
यदि (कनेक्ट (सॉकेटडिस्क्रिप्टर, (स्ट्रक्चर सॉकएड्र *) और सर्वरएड्रेस, साइजऑफ़ (सर्वरएड्रेस)) <0) {
fprintf (stderr, "कनेक्ट करने में विफल:%s\n", strerror (errno));
बाहर निकलें (EXIT_FAILURE);
} <पी> // डेटा भेजें और प्राप्त करें
// सॉकेट बंद करें
यदि (बंद करें (सॉकेट डिस्क्रिप्टर) <0)
{
fprintf (stderr, "सॉकेट बंद होने में विफल:%s\n", strerror (errno));
बाहर निकलें (EXIT_FAILURE);
}
प्रिंटफ ("सॉकेट सफलतापूर्वक बंद हुआ।\n");
वापसी 0;
} <पी> आउटपुट: पी> <पी> $ जीसीसी त्रुटि.सी -ओ त्रुटि
$ ./त्रुटि
कनेक्ट करने में विफल:कनेक्शन अस्वीकृत <पी> स्पष्टीकरण: पी> <पी> इस प्रोग्रामिंग उदाहरण में, हम "strerror()" फ़ंक्शन का उपयोग करके C में सॉकेट त्रुटियों को पकड़ते हैं। यह फ़ंक्शन हमें "errno" वेरिएबल में संग्रहीत त्रुटि कोड को मानव-पठनीय त्रुटि संदेश में परिवर्तित करने की अनुमति देता है। "
निष्कर्ष
<पी> सॉकेट फ़ंक्शंस द्वारा प्रदान किए गए रिटर्न मान और त्रुटि कोड को समझकर, हम सी में इन सॉकेट त्रुटियों को आसानी से पकड़ सकते हैं और संभाल सकते हैं। पहले प्रोग्रामिंग उदाहरण में, हमने बताया कि "पेरर ()" फ़ंक्शन का उपयोग करके त्रुटि को कैसे पकड़ा जाए और मान वापस कैसे किया जाए। दूसरे उदाहरण में, हमने विस्तृत त्रुटि संदेश प्राप्त करने के लिए "strerror()" फ़ंक्शन की व्याख्या की। इन विधियों को समझकर, हम सूचनात्मक त्रुटि संदेश प्रदर्शित कर सकते हैं और सॉकेट प्रोग्रामिंग में अपने प्रोग्राम को ठीक से समाप्त कर सकते हैं।लेखक के बारे में
<पी>