टीसीपी क्लाइंट पक्ष के लिए: आईपी के लिए DNS नाम देखने के लिए
उपयोग gethostbyname, यह एक hostent संरचना वापस आ जाएगी। आइए इस लौटाए गए मूल्य होस्ट को कॉल करें।
sockaddr_in sock;
sock.sin_family = AF_INET;
sock.sin_port = htons(REMOTE_PORT);
sock.sin_addr.s_addr = ((struct in_addr *)(host->h_addr))->s_addr;
सॉकेट बनाने और फोन कनेक्ट:
s = socket(AF_INET, SOCK_STREAM, 0);
connect(s, (struct sockaddr *)&sock, sizeof(sock))
टीसीपी सर्वर साइड के लिए:
hostent *host = gethostbyname(HOSTNAME_CSTR);
सॉकेट पते संरचना भरें
सेटअप एक सॉकेट
बाइंड का उपयोग करके उस सॉकेट को अपना पता बाध्य करें।
प्रारंभ के साथ कि सॉकेट पर सुन सुन
कॉल कनेक्ट किए गए ग्राहक पाने के लिए स्वीकार करते हैं। < - इस बिंदु पर आप कनेक्शन को संभालने के लिए एक नया धागा उत्पन्न करते हैं, जबकि आप अगली कनेक्टेड क्लाइंट प्राप्त करने के लिए स्वीकार करने के लिए एक और कॉल करते हैं।
जनरल संचार:
उपयोग भेजने और recv पढ़ सकते हैं और क्लाइंट और सर्वर के बीच लिखने के लिए।
बीएसडी सॉकेट के स्रोत कोड उदाहरण:
आप wikipedia पर इसके कुछ अच्छे उदाहरण कोड पा सकते हैं।
अतिरिक्त पठन:
मैं अत्यधिक this book और this online tutorial की सिफारिश:
4:
स्रोत
2008-09-16 23:13:20
रॉ सॉकेट बहुत मुश्किल हैं और विभिन्न प्रणालियों पर थोड़ा अलग हैं। मुझे केवल उन लोगों के बारे में पता है जो कोड स्नीफर्स (जैसे 'वायरशर्क') और कुछ बल्कि आर्केन डायग्नोस्टिक्स के लिए उपयोग करते हैं। सॉकेट प्रोग्रामिंग सीखना शुरू करने के लिए वे निश्चित रूप से एक अच्छी जगह नहीं हैं। ज्यादातर मामलों में "मैं एक शुरुआत सी ++ प्रोग्रामर/नेटवर्क व्यवस्थापक हूं" का अर्थ है "SOCK_RAW से दूर रहें"। –
@ चककोलर्स, मैं असहमत हूं। मुझे लगता है कि सीखना कच्चे सॉकेट सी ++ सीखने का एक शानदार तरीका है, और विशेष रूप से सी। लाइब्रेरी का उपयोग करना एक बात है, लेकिन लिनक्स के साथ कच्चे सॉकेट एक बहुत ही अंतर्दृष्टिपूर्ण अनुभव है। सी ++ इतनी अनूठी चीजें कर सकता है। मुझे लगता है कि आपके दिल का दर्द होने से बचने की गलती है। – motoku
आपके पास वास्तव में कौन सी प्रणाली है? "कच्चे" सॉकेट कार्यान्वयन एक सिस्टम से अगले में काफी भिन्न होते हैं, ताकि आप जो सीखते हैं (वास्तव में सिस्टम के बारे में अधिकतर, सी ++ के बारे में नहीं) कहीं और नहीं ले जाता है। –