Translate

C में Socket Programming क्या है? (Socket Programming in C)

कल्पना कीजिए कि इंटरनेट पर दो कंप्यूटर एक-दूसरे से बातचीत कर रहे हैं। एक कंप्यूटर संदेश भेज रहा है और दूसरा उसे प्राप्त कर रहा है। यह संचार (communication) जादू से नहीं होता — इसके पीछे एक महत्वपूर्ण तकनीक काम करती है जिसे Socket Programming in C कहा जाता है।

यदि आप Network Programming, Client Server Model, या Distributed Systems सीखना चाहते हैं, तो Socket Programming in C समझना बहुत जरूरी है।

इस ब्लॉग में हम सरल भाषा और practical examples के साथ समझेंगे:

  • Socket क्या होता है
  • C में Socket Programming कैसे काम करती है
  • TCP और UDP Sockets
  • Client Server Communication
  • Basic C Socket Programming Example
Socket Programming in C – हिंदी में पूरी गाइड | C Socket Programming Tutorial

Socket Programming Terminology (महत्वपूर्ण शब्द)

जब आप Socket Programming in C सीखते हैं, तो कुछ technical terms बार-बार सामने आते हैं। इन terms को समझना C Network Programming को आसान बना देता है।

  • Socket Descriptor – socket() द्वारा return किया गया identifier
  • Port Number – application communication endpoint
  • IP Address – network device identification
  • Protocol Stack – TCP/IP layers
  • Blocking vs Non-Blocking Socket
  • Concurrent Server

Table of Contents

Socket क्या है? (What is a Socket)

Socket एक communication endpoint होता है जो दो machines को नेटवर्क के माध्यम से data भेजने और प्राप्त करने की सुविधा देता है।

सरल शब्दों में:

Socket = Network Communication का दरवाज़ा

जब दो programs इंटरनेट या लोकल नेटवर्क पर communicate करते हैं, तो वे Socket API का उपयोग करते हैं।

Socket के मुख्य components:

  • IP Address
  • Port Number
  • Protocol (TCP या UDP)

Socket Programming Components

C में Socket Programming कई मुख्य components पर आधारित होती है। इन components को समझना network communication को समझने के लिए आवश्यक है।

  • IP Address – Network device का unique identifier
  • Port Number – Application communication endpoint
  • Socket Descriptor – socket() function द्वारा returned identifier
  • Protocol – TCP या UDP communication rules

Socket वास्तव में IP Address + Port Number का combination होता है जो communication endpoint बनाता है।

Socket Domains (Communication Domain)

जब हम socket() function create करते हैं, तो हमें communication domain specify करना होता है।

  • AF_INET – IPv4 Internet communication
  • AF_INET6 – IPv6 communication
  • AF_LOCAL / AF_UNIX – Same machine processes communication

Most network applications में AF_INET domain उपयोग किया जाता है।

Socket Programming in C क्या है?

Socket Programming in C वह तकनीक है जिसके माध्यम से हम C language का उपयोग करके नेटवर्क applications बनाते हैं।

उदाहरण:

  • Chat Application
  • Web Server
  • Online Games
  • Messaging Systems

इन सभी applications के पीछे C Network Programming या अन्य भाषाओं की socket-based communication होती है।

जब हम Socket Programming in C करते हैं, तो हम system calls का उपयोग करते हैं जैसे:

  • socket()
  • bind()
  • listen()
  • accept()
  • connect()
  • send()
  • recv()

Client Server Model कैसे काम करता है

Client Server Model network communication का सबसे common architecture है।

Server क्या करता है

  • Port पर listen करता है
  • Client connection स्वीकार करता है
  • Data process करता है

Client क्या करता है

  • Server से connection request करता है
  • Data भेजता या प्राप्त करता है

उदाहरण:

जब आप browser में website खोलते हैं, तो आपका browser client होता है और website का server server होता है।

यही concept Socket Programming in C में implement किया जाता है।

TCP vs UDP Sockets

Feature TCP Socket UDP Socket
Connection Connection oriented Connectionless
Reliability Reliable Less reliable
Speed Slower Faster
Use Case Web, Email Gaming, Streaming

जब आप Socket Programming in C सीखते हैं, तो अक्सर शुरुआत TCP sockets से की जाती है क्योंकि वे अधिक reliable होते हैं।

C Socket Programming के Steps

यदि आप C Network Programming में client-server application बनाना चाहते हैं, तो आमतौर पर ये steps follow होते हैं:

Server Side Steps

  1. socket() create करें
  2. bind() से address assign करें
  3. listen() से incoming connections wait करें
  4. accept() से client connection accept करें
  5. send() और recv() से data exchange करें

Client Side Steps

  1. socket() create करें
  2. connect() से server से connect करें
  3. send() / recv() से data exchange करें

Basic Socket Programming Example in C

Server Code

int server_fd = socket(AF_INET, SOCK_STREAM, 0);
bind(server_fd, (struct sockaddr*)&address, sizeof(address));
listen(server_fd, 3);
int new_socket = accept(server_fd, NULL, NULL);

Client Code

int sock = socket(AF_INET, SOCK_STREAM, 0);
connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
send(sock, message, strlen(message), 0);

यह एक basic example है जो Socket Programming in C की मूल प्रक्रिया को दिखाता है।

TCP Three Way Handshake कैसे काम करता है

जब Socket Programming in C में TCP connection establish होता है, तो server और client के बीच एक प्रक्रिया होती है जिसे TCP Three Way Handshake कहा जाता है।

Step 1 – SYN

Client server को connection request भेजता है।

Step 2 – SYN ACK

Server request accept करके acknowledgement भेजता है।

Step 3 – ACK

Client confirmation भेजता है और connection establish हो जाता है।

इस प्रक्रिया के बाद Client Server Communication शुरू होता है।

Complete TCP Server Example in C

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main() {

int server_fd = socket(AF_INET, SOCK_STREAM, 0);

struct sockaddr_in address;

address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(8080);

bind(server_fd, (struct sockaddr*)&address, sizeof(address));

listen(server_fd, 5);

printf("Server Listening on Port 8080");

int client_socket = accept(server_fd, NULL, NULL);

printf("Client Connected");

}

यह example एक basic C Socket Programming Server बनाता है जो port 8080 पर client connections accept करता है।

sockaddr_in Structure Explained

Socket programming में address information store करने के लिए sockaddr_in structure उपयोग किया जाता है।

struct sockaddr_in {

   short sin_family;
   unsigned short sin_port;
   struct in_addr sin_addr;
   char sin_zero[8];

};

Important fields:

  • sin_family – Address family (AF_INET)
  • sin_port – Port number
  • sin_addr – IP address

Network Byte Order और htons()

Networking में systems अलग-अलग byte ordering use कर सकते हैं। इसलिए port number को network format में convert करना जरूरी होता है।

इसके लिए हम htons() function का उपयोग करते हैं।

server_address.sin_port = htons(8080);

यह host byte order को network byte order में convert करता है।

Common Socket Programming Errors

जब beginners Socket Programming in C सीखते हैं, तो अक्सर ये errors आते हैं:

  • Address already in use
  • Port reuse issue होता है। Solution: SO_REUSEADDR option.

  • Connection refused
  • Server running नहीं है या port incorrect है।

  • Broken pipe
  • Client connection close कर चुका है।

High Performance Socket Servers कैसे बनाएँ

Production level systems में simple socket programming पर्याप्त नहीं होती। High performance servers के लिए advanced techniques उपयोग की जाती हैं।

  • Non Blocking IO
  • select() / poll()
  • epoll (Linux)
  • Multi-threaded servers
  • Event driven architecture

Large scale systems जैसे web servers और chat systems इन्हीं techniques का उपयोग करते हैं।

Socket Programming Security Best Practices

  • Always validate incoming data
  • Buffer overflow protection
  • Timeout handling
  • Connection limits
  • SSL / TLS encryption

Secure Network Programming production systems के लिए अत्यंत महत्वपूर्ण है।

setsockopt() Function क्या करता है

setsockopt() socket options configure करने के लिए उपयोग किया जाता है।

Example:

int opt = 1;

setsockopt(server_fd,
           SOL_SOCKET,
           SO_REUSEADDR,
           &opt,
           sizeof(opt));

यह option server को same port reuse करने देता है और “address already in use” error को रोकता है।

Blocking vs Non-Blocking Sockets

Default sockets blocking mode में काम करते हैं।

  • Blocking Socket – program wait करता है जब तक data या connection available न हो
  • Non Blocking Socket – program immediately return करता है

High performance servers अक्सर non-blocking sockets और event driven architecture उपयोग करते हैं।

Socket Closing और Resource Management

जब client और server के बीच communication complete हो जाता है, तो socket को close करना जरूरी होता है।

close(socket_fd);

यह system resources release करता है और network connection terminate करता है।

Real Life Use Cases

C Socket Programming का उपयोग कई real-world systems में होता है:

  • Web Servers
  • Chat Applications
  • File Transfer Systems
  • Distributed Databases
  • Online Multiplayer Games

कई high-performance servers अभी भी Socket Programming in C या C++ का उपयोग करते हैं क्योंकि यह low-level control और speed प्रदान करता है।

Practical Tips for Learning Socket Programming

यदि आप Socket Programming in C सीखना चाहते हैं, तो ये actionable tips अपनाएँ:

1. Localhost पर practice करें

सबसे पहले अपने computer पर server और client run करें।

2. TCP से शुरुआत करें

TCP sockets समझना आसान होता है।

3. Mini Projects बनाएं

  • Simple Chat Application
  • File Transfer Tool
  • Mini HTTP Server

4. Debugging सीखें

Network programming में debugging बहुत जरूरी skill है।

Frequently Asked Questions (FAQs)

1. Socket Programming in C क्या है?

Socket Programming in C एक तकनीक है जिसके माध्यम से network applications बनाए जाते हैं जो client-server communication का उपयोग करते हैं।

2. TCP और UDP में क्या अंतर है?

TCP reliable और connection-oriented होता है, जबकि UDP faster लेकिन less reliable होता है।

3. Socket Programming कहाँ उपयोग होती है?

Web servers, chat apps, online games और distributed systems में socket programming का उपयोग होता है।

4. क्या Socket Programming सीखना कठिन है?

शुरुआत में थोड़ा जटिल लग सकता है, लेकिन examples और practice से इसे आसानी से सीखा जा सकता है।

5. क्या Socket Programming सिर्फ C में होती है?

नहीं, socket programming Java, Python, Go और कई languages में होती है, लेकिन C में इसका low-level control अधिक होता है।

📌 Further reading

Post a Comment

Blogger

Your Comment Will be Show after Approval , Thanks

Support Our Content

Pay via UPI
Works with: GPay | PhonePe | Paytm | BHIM
anurajk.com@ptyes


More Payment Options / Scan QR →

Ads

 
↑ Top