Python Language
पायथन नेटवर्किंग
खोज…
टिप्पणियों
सबसे सरल पायथन सॉकेट क्लाइंट-सर्वर उदाहरण है
सर्वर साइड:
import socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8089))
serversocket.listen(5) # become a server socket, maximum 5 connections
while True:
connection, address = serversocket.accept()
buf = connection.recv(64)
if len(buf) > 0:
print(buf)
break
ग्राहक की ओर:
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost', 8089))
clientsocket.send('hello')
पहले SocketServer.py चलाएँ, और सुनिश्चित करें कि सर्वर sth सुनने / प्राप्त करने के लिए तैयार है, फिर क्लाइंट सर्वर को जानकारी भेजेगा; सर्वर द्वारा sth प्राप्त करने के बाद, यह समाप्त हो जाता है
एक सरल एचटीपी सर्वर बनाना
फ़ाइलों को साझा करने के लिए या अपने स्थानीय नेटवर्क में सरल वेबसाइटों (http और जावास्क्रिप्ट) को होस्ट करने के लिए, आप पायथन के बिल्ट सिंपलएचटीटीपीएसवर मॉड्यूल का उपयोग कर सकते हैं। अजगर आपके पथ चर में होना चाहिए। उस फ़ोल्डर पर जाएं जहां आपकी फाइलें हैं और टाइप करें:
python 2
:
$ python -m SimpleHTTPServer <portnumber>
python 3
:
$ python3 -m http.server <portnumber>
यदि पोर्ट नंबर नहीं दिया गया है तो 8000
डिफ़ॉल्ट पोर्ट है। तो उत्पादन होगा:
0.0.0.0 पोर्ट 8000 पर HTTP सेवित ...
आप http://hostipaddress:8000/
लिखकर स्थानीय नेटवर्क से जुड़े किसी भी उपकरण के माध्यम से अपनी फ़ाइलों तक पहुंच सकते हैं।
hostipaddress
आपका स्थानीय आईपी पता है जो संभवतः 192.168.xx
शुरू होता है।
मॉड्यूल को पूरा करने के लिए बस ctrl+c.
दबाएं ctrl+c.
एक टीसीपी सर्वर बनाना
आप socketserver
लाइब्रेरी का उपयोग करके एक टीसीपी सर्वर बना सकते हैं। यहाँ एक सरल इको सर्वर है।
सर्वर साइड
from sockerserver import BaseRequestHandler, TCPServer
class EchoHandler(BaseRequestHandler):
def handle(self):
print('connection from:', self.client_address)
while True:
msg = self.request.recv(8192)
if not msg:
break
self.request.send(msg)
if __name__ == '__main__':
server = TCPServer(('', 5000), EchoHandler)
server.serve_forever()
ग्राहक की ओर
from socket import socket, AF_INET, SOCK_STREAM
sock = socket(AF_INET, SOCK_STREAM)
sock.connect(('localhost', 5000))
sock.send(b'Monty Python')
sock.recv(8192) # returns b'Monty Python'
socketserver
सरल टीसीपी सर्वर बनाने में अपेक्षाकृत आसान बनाता है। हालाँकि, आपको पता होना चाहिए कि, डिफ़ॉल्ट रूप से, सर्वर सिंगल थ्रेडेड होते हैं और एक समय में केवल एक क्लाइंट की सेवा कर सकते हैं। यदि आप कई क्लाइंट्स को हैंडल करना चाहते हैं, तो इसके बजाय ThreadingTCPServer
।
from socketserver import ThreadingTCPServer
...
if __name__ == '__main__':
server = ThreadingTCPServer(('', 5000), EchoHandler)
server.serve_forever()
UDP सर्वर बनाना
socketserver
लाइब्रेरी का उपयोग करके एक यूडीपी सर्वर आसानी से बनाया जाता है।
एक साधारण समय सर्वर:
import time
from socketserver import BaseRequestHandler, UDPServer
class CtimeHandler(BaseRequestHandler):
def handle(self):
print('connection from: ', self.client_address)
# Get message and client socket
msg, sock = self.request
resp = time.ctime()
sock.sendto(resp.encode('ascii'), self.client_address)
if __name__ == '__main__':
server = UDPServer(('', 5000), CtimeHandler)
server.serve_forever()
परिक्षण:
>>> from socket import socket, AF_INET, SOCK_DGRAM
>>> sock = socket(AF_INET, SOCK_DGRAM)
>>> sick.sendto(b'', ('localhost', 5000))
0
>>> sock.recvfrom(8192)
(b'Wed Aug 15 20:35:08 2012', ('127.0.0.1', 5000))
एक सूत्र में सरल HttpServer प्रारंभ करें और ब्राउज़र खोलें
उपयोगी है अगर आपका प्रोग्राम रास्ते में वेब पेजों का उत्पादन कर रहा है।
from http.server import HTTPServer, CGIHTTPRequestHandler
import webbrowser
import threading
def start_server(path, port=8000):
'''Start a simple webserver serving path on port'''
os.chdir(path)
httpd = HTTPServer(('', port), CGIHTTPRequestHandler)
httpd.serve_forever()
# Start the server in a new thread
port = 8000
daemon = threading.Thread(name='daemon_server',
target=start_server,
args=('.', port)
daemon.setDaemon(True) # Set as a daemon so it will be killed once the main thread is dead.
daemon.start()
# Open the web browser
webbrowser.open('http://localhost:{}'.format(port))