C++ में BSD Sockets API
C++ programs में socket, bind, listen, accept, connect, send और recv का उपयोग करें।
C++ में BSD Sockets API, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
सॉकेट प्रोग्रामिंग इंटरफ़ेस क्या है?
BSD सॉकेट प्रोग्रामिंग इंटरफ़ेस नेटवर्क प्रोग्रामिंग का व्यवहारतः मानक है। यह Linux, macOS, BSD प्रणालियों और (कुछ छोटे समायोजनों के साथ) Winsock के माध्यम से Windows पर उपलब्ध है।
आवश्यक हेडर फ़ाइलें
प्लेटफ़ॉर्म की हेडर फ़ाइलें शामिल करें और POSIX प्रकारों का उपयोग करें।
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>सॉकेट बनाना
socket कॉल एक फ़ाइल डिस्क्रिप्टर लौटाती है। परिवार (IPv4), प्रकार (TCP या UDP) और प्रोटोकॉल (डिफ़ॉल्ट के लिए 0) पास करें।
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
perror("socket");
return 1;
}पता संरचनाएँ
struct sockaddr_in में IPv4 पता और पोर्ट रहता है। फ़ंक्शन को पास करते समय इसे struct sockaddr* में कास्ट करें।
struct sockaddr_in addr{};
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr);बाइट क्रम: होस्ट बनाम नेटवर्क
नेटवर्क बाइट क्रम बिग-एंडियन होता है। रूपांतरण के लिए htons, htonl, ntohs, ntohl का उपयोग करें।
क्लाइंट को कनेक्ट करना
TCP कनेक्शन शुरू करने के लिए connect का उपयोग करें।
if (connect(sock, (sockaddr*)&addr, sizeof(addr)) < 0) {
perror("connect");
close(sock);
return 1;
}भेजना और प्राप्त करना
send और recv बाइट का आदान-प्रदान करते हैं। दोनों माँगी गई मात्रा से कम डेटा लौटा सकते हैं — हमेशा लूप चलाएँ।
const char* msg = "Hello";
send(sock, msg, strlen(msg), 0);
char buffer[1024];
ssize_t n = recv(sock, buffer, sizeof(buffer)-1, 0);
buffer[n] = '\0';बाइंड करना और सुनना (सर्वर)
सर्वर किसी पते से जुड़ता है, कनेक्शन सुनता है और उन्हें स्वीकार करता है।
int srv = socket(AF_INET, SOCK_STREAM, 0);
bind(srv, (sockaddr*)&addr, sizeof(addr));
listen(srv, 10);
int client = accept(srv, nullptr, nullptr);सॉकेट बंद करना
Unix पर close और Windows पर closesocket कॉल करें।
close(sock);त्रुटि प्रबंधन
सॉकेट फ़ंक्शन त्रुटि होने पर -1 लौटाते हैं और errno सेट करते हैं। हर वापसी मान की जाँच करें।
RAII में लपेटना
साधारण फ़ाइल डिस्क्रिप्टर आसानी से लीक हो सकते हैं। उन्हें ऐसे RAII प्रकार में लपेटें जिसके डिस्ट्रक्टर में close हो — या कस्टम डिलीटर के साथ std::unique_ptr का उपयोग करें।
struct SocketCloser {
void operator()(int* fd) const { if (*fd >= 0) ::close(*fd); }
};
using UniqueSocket = std::unique_ptr<int, SocketCloser>;Windows के अंतर
Windows पर:
<winsock2.h>शामिल करें औरws2_32से लिंक करें- उपयोग से पहले
WSAStartupकॉल करें closeके बजायclosesocketका उपयोग करें- सॉकेट का प्रकार
SOCKET(अनसाइन्ड) होता है
त्वरित जाँच
कौन-सा फ़ंक्शन कॉल क्लाइंट से सर्वर तक TCP कनेक्शन शुरू करता है?
पुनरावलोकन
BSD सॉकेट प्रोग्रामिंग इंटरफ़ेस निम्न-स्तरीय नेटवर्किंग सुविधाएँ प्रदान करता है। सॉकेट बनाएँ, पता कॉन्फ़िगर करें, फिर क्लाइंट के लिए कनेक्ट करें या सर्वर के लिए बाइंड, सुनें और कनेक्शन स्वीकार करें। htons परिवार के फ़ंक्शन से बाइट क्रम बदलें। लीक रोकने के लिए डिस्क्रिप्टर को RAII में लपेटें।
एआई शिक्षक के साथ C++ सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “C++ में BSD Sockets API” पाठ निःशुल्क है?
हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “C++ में BSD Sockets API” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“C++ में BSD Sockets API” में मैं क्या सीखूँगा?
C++ programs में socket, bind, listen, accept, connect, send और recv का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“C++ में BSD Sockets API” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- C++ में BSD Sockets API
- TCP echo server बनाना
- epoll और kqueue के साथ asynchronous IO
- आधुनिक asynchronous IO के लिए Boost Asio