What is Socket programming ?
March 11, 2022 | Samuditha Gunawardane
What is Socket programming ?
Sockets යනු network එකක් හරහා පණිවිඩ යැවීමට භාවිතා කරනු ලබන ක්රමවේදයක් වේ. මේ සදහා ලබා දිය හැකි හොදම උදාහරණය වන්නේ ඔබ ඔබේ ISP හරහා අන්තර්ජාලයට සම්බන්ධ වීමයි.
1990දි පමණ අන්තර්ජාලය කරලියට පැමිණීමත් සමග network socket ක්ෂේත්රයද වේගයෙන් දියුණු වීම සිදුවුනා. Sockets භාවිතා කරන client server application ද ඉතාමත් වේගයෙන් ජනප්රිය වුනා.
Sockets සම්බන්ධ තාක්ෂණික කරුණු විශාල වශයෙන් පවතින නමුත් අද මේ ලිපියෙන් python language භාවිතයෙන් සරල client server application එකක් socket හරහා communicate කරගන්නා ආකාරය විමසා බලමු. Socket programming වලදි අපට හමුවෙන primary socket functions රැසක් පවතිනවා. ඒ අතර පහත දැක්වෙන function බහුලවම භාවිතා වනවා.
.socket()
.bind()
.listen()
.accept()
.connect()
.connect_ex()
.send()
.recv()
.close()
socket connection recieving, accepting, listening වල රටාව පහත රූප සටහන මඟින් පැහැදිලිව හදුනාගත හැකියි.
පලමුව අප විසින් socket එකක් නිර්මාණය කළ යුතු වෙනවා. ඒ සඳහා Python මඟින් අපට ලබා දී ඇති library එක Socket library එක වෙනවා. එය පහත ආකාරයට සිදු කල හැකියි.
Socket එකක් නිර්මාණය කිරීමෙන් පසුව පහත දැක්වෙන function call කල හැකියි.
Server Functions
• s.bind()
Host හා Port එක bind කිරීම සිදු කරයි
• s.listen()
tcp listener එකක් setup කිරීම හා start කිරීම
• s.accept()
client connection එකක් accept කිරීම
Client functions
• s.connect()
tcp server connection එකක් ininitiate කිරීම
General functions
• s.recv()
tcp message එකක් ලබාගැනීම
• s.send()
tcp message එකක් transmit කිරීම
පහත දැක්වෙන්නෙ ඉහත functions යොදාගනිමින් කල ඉතා සරල server හා client script එකක්.
Server Script
Client Script
ඉහත දක්වෙන script වලින් පළමුව server script එක හා දෙවෙනුව client script එක run කිරීමෙන් පසුව පහත ආකාරයේ output එකක් දැකගත හැකියි.
Output - Server | Client
Sockets programming හි භාවිත සහ advanced scripts පිළිබඳව ඉදිරි ලිපි වලින් විමසා බලමු.
මෙම scripts සඳහා source codes අපගේ GitHub පිටුවෙන් ලබාගත හැකියි.
මීට අමතරව network programming සඳහා python මගින් ලබා දී ඇති modules කිහිපයක් පහත දැක්වේ.
Protocol Common function Port No Python module
HTTP Web pages 80 httplib, urllib, xmlrpclib
NNTP Usenet news 119 nntplib
FTP File transfers 20 ftplib, urllib
SMTP Sending email 25 smtplib
POP3 Fetching email 110 poplib
IMAP4 Fetching email 143 imaplib
Telnet Command lines 23 telnetlib
Gopher Document transfers 70 gopherlib, urllib
සටහන - සමුදිත ගුණවර්ධන