Foundations — Socket programming — TCP server - client, UDP server - client in Python
4.3.28 · D1· Coding › Computer Networks › Socket programming — TCP server - client, UDP server - clien
Kisi bhi socket code ki ek line padhne se pehle, kuch words ka magic hona band hona chahiye. Hum har ek word ko zero se build karte hain, ek picture se anchor karte hain, aur tabhi use kisi call mein aane dete hain. Neeche kuch bhi yeh nahi maanta ki tumne pehle networking dekhi hai.
1. Byte — woh ek cheez jo kabhi bhi travel karti hai
Picture: ek row mein 8 chhote lightbulbs socho. Har ek ya to on (1) hai ya off (0). Ek aisi row = ek byte. Ek message bas inhi rows ki ek lambi line hai.
Yeh topic kyun isko use karta hai: network card ko "Python string" ya "integer" ka idea samajh nahi aata — woh sirf bytes move karta hai. Isliye har socket call bytes objects bhejti aur receive karti hai, Python mein b laga ke likha jaata hai: b"hello". Woh akela b parent note ki pehli badi galti ka source hai ("Main bas ek string bhej dunga").

2. Process — woh cheez jo tumhare code ko run karte waqt own karti hai
Picture: do sealed rooms. Andar har ek mein ek running program hai. Dono ke beech koi window nahi. Agar room A ko room B ko kuch dena hai, toh use darwaze ke neeche se slide karna padega — kisi aisi channel se jise baaki duniya (OS) control karti hai.
Yeh topic kyun isko use karta hai: yahi isolation sockets ke exist karne ki poori wajah hai. Agar do programs memory share karte, toh woh bas same variable padhte. Kyunki woh nahi karte, unhe ek channel chahiye — aur socket wahi channel hai.
3. Operating System (OS) aur network card
Picture: NIC building ki wall mein ek mail slot hai; OS building ka front desk hai jo akela us slot ko use kar sakta hai. Tumhare process ko front desk se mail bhejne ki request karni padti hai.
Yeh topic kyun isko use karta hai: tum wire se directly baat nahi karte. Tum OS se request karte ho. Socket API (function calls ka ek set jaise send, recv) exactly wahi language hai jo tum yeh requests karne ke liye use karte ho.
4. IP address — kaun si machine
Picture: ek envelope par street address. Yeh tumhara letter sahi building tak pahunchata hai.
Woh special wala, 127.0.0.1: yeh localhost hai — ek loopback address jiska matlab hai "yahi same machine". Yahan bheje gaye bytes computer kabhi nahi chodh'te; woh OS ke andar hi wapas ghoom jaate hain. Parent note isko isliye use karta hai taaki server aur client ek laptop par run kar sakein.
Yeh topic kyun isko use karta hai: ek socket ko jaanna chahiye ki kaun se computer tak pahunchna hai. IP ke bina OS ko koi idea nahi ki bytes ko kahan steer kare. Poori breakdown ke liye Ports and IP addressing dekho.
5. Port — us machine par kaun sa program
Picture: neeche. IP building hai; ports wall par numbered mailboxes hain. Ek machine par do programs do alag mailbox numbers par listen karte hain taaki replies mix na ho jayein.

Parent 9000 aur 9001 kyun use karta hai: TCP demo port 9000 par listen karta hai, UDP demo 9001 par — alag mailboxes taaki do servers kabhi collide na karein. 1024 se neeche ke ports system services ke liye reserved hain; isliye examples high numbers choose karte hain.
6. Socket — doorway khud (the tuple)
Picture: ek akela labelled doorway jis par sign laga hai jisme sare paanch facts likhe hain. Jab paanchon bhar jayein, OS ko exactly pata hota hai ki bytes ki kaun si stream is doorway se belong karti hai aur kisi aur ki nahi.
Yeh topic kyun isko use karta hai: parent note mein har socket call in paanch slots mein se ek ya zyada fill kar raha hai. bind local pair fill karta hai. connect remote pair fill karta hai. Yeh samajh lene se call list arbitrary lagni band ho jaati hai.
7. Client vs Server — kaun wait karta hai, kaun chalta hai
Picture: ek dukandaar ek fixed counter ke peeche khada hai (server) versus ek customer jo andar aata hai (client). Customer ko pata hona chahiye dukaan kahan hai; dukaan bas wait karti hai.
Sirf server kyun bind karta hai: client ko fixed address ki zaroorat nahi — kisi ko use dhunddhna nahi hai, woh khud dhunddhta hai. Isliye jab client connect karta hai, OS quietly use ek throwaway ephemeral port assign kar deta hai. Yahi wajah hai ki parent note kehta hai "client normally bind nahi karta".
8. TCP vs UDP — doorway ki do personalities
Picture: neeche. TCP paani hai pipe mein daala hua — yeh ek continuous flow ki tarah nikalti hai bina kisi mark ke ki har pour kahan se shuru hua. UDP alag sealed postcards hain — har ek apne edges rakhta hai, lekin kuch mailbag se gir jaate hain.

Reliability ka kuch cost kyun hota hai: order aur delivery guarantee karne ke liye, TCP pehle ek setup ritual perform karta hai (TCP three-way handshake) aur lost pieces ko track/re-send karta hai. UDP yeh sab skip karta hai, isliye woh faster hai lekin lossy.
9. "Blocking" — kyun accept aur recv pause karte hain
Picture: dukandaar freeze ho jaata hai, darwaze ko ghoorta rehta hai, kuch aur nahi karta jab tak koi customer andar nahi aata. accept() block karta hai jab tak koi client dial nahi karta; recv() block karta hai jab tak bytes nahi aatein.
Yeh topic kyun isko use karta hai: parent note ka comment # BLOCKS until a client dials tab tak sense nahi banta jab tak tum nahi jaante ki ek call pause kar sakti hai. Baad mein, is freeze se bachna exactly wahi hai jiske baare mein select / asyncio for concurrent servers hai.
10. Do leftover terms jinhe parent lean karta hai
Equipment checklist
Khud ko test karo — right side cover karo aur reveal karne se pehle jawab do.
Byte kya hai, numbers mein?
Bhejna se pehle string ko .encode() kyun karna padta hai?
Do processes ek variable kyun share nahi kar sakti?
Network card ko touch karne ki permission kise hoti hai?
IP address kya identify karta hai?
Port kya identify karta hai?
127.0.0.1 ka matlab kya hai?
Socket ko kaun se paanch slots define karte hain?
Client usually bind kyun nahi karta?
SOCK_STREAM kaun sa protocol deta hai, aur data ki kaisi shape?
SOCK_DGRAM kaun sa protocol deta hai, aur data ki kaisi shape?
accept() ke liye "blocking" ka matlab kya hai?
listen(5) mein 5 kya hai?
accept se pehle queued.