खोज…


टिप्पणियों

(बहुत) मूल पायथन क्लाइंट सॉकेट उदाहरण

सबसे सरल पायथन सॉकेट क्लाइंट-सर्वर उदाहरण है

सर्वर साइड:

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))


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow