TCP Client
Connect करें और भेजें
TCP Client, CoddyKit पर C Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
TCP क्लाइंट बनाना
TCP क्लाइंट सर्वर से कनेक्ट होता है और फिर डेटा भेजता तथा प्राप्त करता है। इसका जीवनचक्र सर्वर से छोटा है: सॉकेट बनाना, कनेक्ट करना, संचार करना और बंद करना।
चरण 1: सॉकेट बनाएँ
सर्वर की तरह IPv4 TCP के लिए स्ट्रीम सॉकेट बनाएँ।
#include <sys/socket.h>
#include <stdio.h>
int make_client_socket(void) {
int fd = socket(AF_INET, SOCK_STREAM, 0);
if (fd < 0) perror("socket");
return fd;
}चरण 2: सर्वर का विवरण दें
sockaddr_in में सर्वर का पोर्ट और IP भरें। बिंदुओं वाले IP स्ट्रिंग को बाइनरी रूप में बदलने के लिए inet_pton का उपयोग करें।
#include <arpa/inet.h>
#include <netinet/in.h>
int set_server(struct sockaddr_in *addr, const char *ip, unsigned short port) {
addr->sin_family = AF_INET;
addr->sin_port = htons(port);
return inet_pton(AF_INET, ip, &addr->sin_addr); /* 1 on success */
}चरण 3: कनेक्ट करें
connect() सर्वर के साथ TCP हैंडशेक करता है। सफलता पर सॉकेट डेटा के लिए तैयार होता है; विफलता पर यह errno सेट करता है, जैसे कनेक्शन अस्वीकार होना।
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
int do_connect(int fd, struct sockaddr_in *addr) {
if (connect(fd, (struct sockaddr *)addr, sizeof *addr) < 0) {
perror("connect"); return -1;
}
return 0;
}बाइंड करना आवश्यक नहीं
क्लाइंट आमतौर पर bind छोड़ देते हैं: कर्नेल connect के दौरान अपने-आप एक अस्थायी स्रोत पोर्ट देता है। क्लाइंट को तभी बाइंड करें, जब आपको किसी खास स्रोत पोर्ट की आवश्यकता हो।
चरण 4: डेटा भेजें
कनेक्ट करने के बाद send से अनुरोध लिखें। पूरा बफ़र भेजा जाना सुनिश्चित करने के लिए लूप चलाएँ।
#include <sys/socket.h>
#include <string.h>
int send_all(int fd, const char *data) {
size_t left = strlen(data);
const char *p = data;
while (left > 0) {
ssize_t n = send(fd, p, left, 0);
if (n <= 0) return -1;
p += n; left -= (size_t)n;
}
return 0;
}चरण 5: उत्तर प्राप्त करें
recv से सर्वर का उत्तर पढ़ें। बफ़र को स्ट्रिंग की तरह इस्तेमाल करने से पहले उसके अंत में नल वर्ण जोड़ें।
#include <sys/socket.h>
#include <stdio.h>
void read_reply(int fd) {
char buf[512];
ssize_t n = recv(fd, buf, sizeof buf - 1, 0);
if (n > 0) { buf[n] = 0; printf("server said: %s\n", buf); }
else if (n == 0) printf("server closed connection\n");
}बंद होने तक पढ़ना
एक recv पूरा उत्तर न लौटा सकता है। टुकड़ों में आए पूरे उत्तर को पढ़ने के लिए तब तक लूप चलाएँ, जब तक recv 0 न लौटाए (दूसरे पक्ष ने कनेक्शन बंद कर दिया)।
#include <sys/socket.h>
#include <stdio.h>
void drain(int fd) {
char buf[256]; ssize_t n;
while ((n = recv(fd, buf, sizeof buf, 0)) > 0)
fwrite(buf, 1, (size_t)n, stdout);
}चरण 6: बंद करें
कनेक्शन समाप्त करने और डिस्क्रिप्टर मुक्त करने के लिए close(fd) कॉल करें। इससे TCP FIN भेजा जाता है, जिससे सर्वर को पता चलता है कि क्लाइंट का काम पूरा हो गया है।
#include <unistd.h>
void finish(int fd) {
close(fd);
}shutdown से आधा-कनेक्शन बंद करना
shutdown(fd, SHUT_WR) केवल लिखने की दिशा बंद करता है। इससे अनुरोध समाप्त होने का संकेत मिलता है, जबकि क्लाइंट उत्तर पढ़ना जारी रख सकता है। अनुरोध-फिर-उत्तर वाले प्रोटोकॉल के लिए यह उपयोगी है।
कनेक्शन विफलताओं से निपटना
क्लाइंट की सामान्य त्रुटियाँ: ECONNREFUSED (कोई सर्वर सुन नहीं रहा), ETIMEDOUT (होस्ट तक पहुँचा नहीं जा सकता), और EHOSTUNREACH। हमेशा connect की जाँच करें और विफलताओं की स्पष्ट सूचना उपयोगकर्ता को दें।
त्वरित जाँच
TCP क्लाइंट के बारे में अपनी समझ जाँचें।
पुनरावलोकन
आपने एक TCP क्लाइंट बनाया।
- socket बनाएँ, फिर सर्वर के
sockaddr_inसे connect करें - bind की आवश्यकता नहीं; कर्नेल स्रोत पोर्ट चुन लेता है
- अनुरोध भेजें, उत्तर recv करें (पूरा डेटा पाने के लिए लूप चलाएँ)
- काम पूरा होने पर close या shutdown करें; connect की विफलताओं को संभालें
एआई शिक्षक के साथ C सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 39
- पाठ
- 144
अक्सर पूछे जाने वाले प्रश्न
क्या “TCP Client” पाठ निःशुल्क है?
हाँ—“TCP Client” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“TCP Client” में मैं क्या सीखूँगा?
Connect करें और भेजें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“TCP Client” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।