Cara Mengubah Peranti Anda Menjadi Pelayan Mudah Menggunakan Python.

DDD
Lepaskan: 2024-09-23 18:15:32
asal
225 orang telah melayarinya

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
Salin selepas log masuk

buat fail bernama server.py

nano server.py
Salin selepas log masuk

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()
Salin selepas log masuk

buat direktori bernama www

mkdir www
Salin selepas log masuk

kini navigasi ke direktori www

cd www
Salin selepas log masuk

buat fail bernama index.html

nano index.html
Salin selepas log masuk

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>
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk
ifconfig
Salin selepas log masuk

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:
Salin selepas log masuk

Tukar kepada:

with ThreadedHTTPServer(("0.0.0.0", PORT), MyHandler) as httpd:
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!