Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mengubah Peranti Anda Menjadi Pelayan Mudah Menggunakan Python.

Cara Mengubah Peranti Anda Menjadi Pelayan Mudah Menggunakan Python.

DDD
DDDasal
2024-09-23 18:15:32356semak imbas

How to Turn Your Device Into a Simple Server Using Python.

Pengarang: Trix Cyrus

Mari jadikan pelayan ular sawa dihoskan daripada peranti anda.

Bermula..

buat direktori bernama pelayan

mkdir server

buat fail bernama server.py

nano server.py

tampal kod di bawah.

import http.server
import socketserver
import logging
import os
import threading
from urllib.parse import urlparse, parse_qs

PORT = 8080
DIRECTORY = "www"  

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')

class MyHandler(http.server.SimpleHTTPRequestHandler):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=DIRECTORY, **kwargs)

    def log_message(self, format, *args):
        logging.info("%s - %s" % (self.client_address[0], format % args))

    def do_GET(self):
        parsed_path = urlparse(self.path)
        query = parse_qs(parsed_path.query)

        # Custom logic for different routes
        if parsed_path.path == '/':
            self.serve_file("index.html")
        elif parsed_path.path == '/about':
            self.respond_with_text("<h1>About Us</h1><p>This is a custom Python server.</p>")
        elif parsed_path.path == '/greet':
            name = query.get('name', ['stranger'])[0]
            self.respond_with_text(f"<h1>Hello, {name}!</h1>")
        else:
            self.send_error(404, "File Not Found")

    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        post_data = self.rfile.read(content_length)
        logging.info("Received POST data: %s", post_data.decode('utf-8'))
        self.respond_with_text("<h1>POST request received</h1>")

    def serve_file(self, filename):
        if os.path.exists(os.path.join(DIRECTORY, filename)):
            self.send_response(200)
            self.send_header("Content-type", "text/html")
            self.end_headers()
            with open(os.path.join(DIRECTORY, filename), 'rb') as file:
                self.wfile.write(file.read())
        else:
            self.send_error(404, "File Not Found")

    def respond_with_text(self, content):
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write(content.encode('utf-8'))

class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
    daemon_threads = True  # Handle requests in separate threads

def run_server():
    try:
        with ThreadedHTTPServer(("", PORT), MyHandler) as httpd:
            logging.info(f"Serving HTTP on port {PORT}")
            logging.info(f"Serving files from directory: {DIRECTORY}")
            httpd.serve_forever()
    except Exception as e:
        logging.error(f"Error starting server: {e}")
    except KeyboardInterrupt:
        logging.info("Server stopped by user")

if __name__ == "__main__":
    server_thread = threading.Thread(target=run_server)
    server_thread.start()

    server_thread.join()

buat direktori bernama www

mkdir www

kini navigasi ke direktori www

cd www

buat fail bernama index.html

nano index.html

tampal kod di bawah di dalamnya

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Python Simple Server</title>
</head>
<body>
    <h1>Welcome to My Python Server!</h1>
    <p>This is a simple web server running on your local device.</p>
</body>
</html>

Langkah 2: Uji Laluan

Selepas menjalankan skrip yang diubah suai, pergi ke:

http://localhost:8080/ untuk melihat halaman utama.
http://localhost:8080/about untuk melihat halaman tentang.
http://localhost:8080/greet?name=Trix
Untuk mana-mana laluan lain, pelayan akan mengembalikan ralat 404.

di bawah ialah struktur direktori

server/
├── server.py
└── www/
    └── index.html

Menjalankan Pelayan pada Peranti Jauh

Bagaimana jika anda ingin mengakses pelayan Python anda daripada peranti lain pada rangkaian yang sama? Anda boleh melakukan ini dengan mudah dengan mencari alamat IP tempatan mesin yang menjalankan pelayan dan menggunakannya bukannya localhost.

Langkah 1: Cari Alamat IP Anda

gunakan arahan seperti

ipconfig
ifconfig

Cari alamat IPv4 anda (seperti 192.168.x.x).

Langkah 2. Ubah Suai Skrip Pelayan Anda

Dalam skrip pelayan anda, gantikan baris tempat pelayan dimulakan:

with ThreadedHTTPServer(("", PORT), MyHandler) as httpd:

Tukar kepada:

with ThreadedHTTPServer(("0.0.0.0", PORT), MyHandler) as httpd:

Langkah 3: Akses Pelayan daripada Peranti Lain

Kini, menggunakan alamat IP yang anda temui sebelum ini, anda boleh mengakses pelayan daripada mana-mana peranti pada rangkaian yang sama dengan pergi ke http://:8080 dalam penyemak imbas.

Dan Semua Set

~TrixSec

Atas ialah kandungan terperinci Cara Mengubah Peranti Anda Menjadi Pelayan Mudah Menggunakan Python.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn