Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membina bilik sembang anda sendiri menggunakan python

Bagaimana untuk membina bilik sembang anda sendiri menggunakan python

PHPz
PHPzke hadapan
2023-05-11 20:46:041131semak imbas

    1. Konsep asas pengaturcaraan rangkaian

    1. Alamat IP: pengecam unik untuk setiap peranti dalam rangkaian, digunakan untuk menyambung ke rangkaian peralatan Penentududukan.

    2. Port: mengenal pasti aplikasi rangkaian yang berbeza pada peranti Satu port sepadan dengan perkhidmatan atau aplikasi tertentu.

    3. Protokol: peraturan untuk komunikasi data, seperti TCP dan UDP.

    2. Pengenalan dan prinsip pengaturcaraan Soket

    1. Soket ialah pemegang komunikasi yang digunakan untuk menghantar data dalam rangkaian. Pustaka

    2. Python's socket menyediakan set fungsi dan kelas yang kaya untuk melaksanakan pengaturcaraan rangkaian.

    3. Pengaturcaraan soket terutamanya termasuk operasi seperti mencipta objek soket, alamat dan port yang mengikat, memantau sambungan, menerima dan menghantar data, dsb.

    3. Seni bina bilik sembang dan keperluan fungsian

    1. Bilik sembang dibahagikan kepada bahagian pelayan dan bahagian pelanggan.

    2. Pelayan bertanggungjawab untuk menerima permintaan sambungan pelanggan dan memajukan mesej pelanggan.

    3. Pelanggan bertanggungjawab untuk mewujudkan sambungan dengan pelayan dan menghantar serta menerima mesej.

    4. Bilik sembang perlu menyokong berbilang pelanggan dalam talian pada masa yang sama dan menerima serta menghantar mesej dalam masa nyata.

    4. Laksanakan bahagian pelayan bilik sembang

    1.

    import socket
    import threading
     
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    2. Ikat alamat IP dan port.

    server.bind(("0.0.0.0", 8080))

    3.

    server.listen(5)

    4. Apabila pelanggan baharu menyambung, tambahkannya pada senarai pelanggan yang disambungkan.

    clients = []
     
    while True:
        client_socket, client_address = server.accept()
        clients.append(client_socket)
        thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
        thread.start()

    5. Gunakan multi-threading untuk mengendalikan penerimaan dan penghantaran mesej untuk setiap pelanggan.

    def handle_client(client_socket, client_address):
        print(f"[INFO] Client {client_address} connected.")
        while True:
            try:
                message = client_socket.recv(1024).decode("utf-8")
                if not message:
                    break
                print(f"[{client_address}] {message}")
                broadcast(client_socket, f"[{client_address}] {message}")
            except:
                break
        print(f"[INFO] Client {client_address} disconnected.")
        clients.remove(client_socket)
        client_socket.close()
    ``

    6. Apabila pelanggan memutuskan sambungan, keluarkannya daripada senarai pelanggan

        clients.remove(client_socket)
        client_socket.close()

    7.

    def broadcast(from_client_socket, message):
        for client_socket in clients:
            if client_socket != from_client_socket:
                client_socket.send(message.encode("utf-8"))

    8. Kod lengkap pelayan bilik sembang:

    import socket
    import threading
     
    def handle_client(client_socket, client_address):
        print(f"[INFO] Client {client_address} connected.")
        while True:
            try:
                message = client_socket.recv(1024).decode("utf-8")
                if not message:
                    break
                print(f"[{client_address}] {message}")
                broadcast(client_socket, f"[{client_address}] {message}")
            except:
                break
        print(f"[INFO] Client {client_address} disconnected.")
        clients.remove(client_socket)
        client_socket.close()
     
    def broadcast(from_client_socket, message):
        for client_socket in clients:
            if client_socket != from_client_socket:
                client_socket.send(message.encode("utf-8"))
     
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(("0.0.0.0", 8080))
    server.listen(5)
     
    print("[INFO] Server is listening...")
     
    clients = []
     
    while True:
        client_socket, client_address = server.accept()
        clients.append(client_socket)
        thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
        thread.start()

    5. Laksanakan klien bilik sembang

    1.

    import socket
    import threading
     
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    2. Sambung ke alamat IP dan port pelayan.

    client.connect(("127.0.0.1", 8080))

    3. Gunakan multi-threading untuk memproses mesej yang dihantar daripada pelayan.

    def receive_message():
        while True:
            message = client.recv(1024).decode("utf-8")
            print(message)
     
    thread = threading.Thread(target=receive_message)
    thread.start()

    4. Terima input mesej oleh pengguna dan hantar ke pelayan.

    while True:
        message = input()
        client.send(message.encode("utf-8"))

    5. Kod lengkap pelanggan bilik sembang:

    import socket
    import threading
     
    def receive_message():
        while True:
            message = client.recv(1024).decode("utf-8")
            print(message)
     
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(("127.0.0.1", 8080))
     
    print("[INFO] Connected to the server.")
     
    thread = threading.Thread(target=receive_message)
    thread.start()
     
    while True:
        message = input()
        client.send(message.encode("utf-8"))

    6. Uji bilik sembang

    Mulakan pelayan bilik sembang dan berbilang pelanggan masing-masing. Hantar mesej pada klien dan perhatikan sama ada klien lain boleh menerima mesej tersebut. Cuba putuskan sambungan pelanggan dan perhatikan tingkah laku pelayan dan pelanggan lain.

    Atas ialah kandungan terperinci Bagaimana untuk membina bilik sembang anda sendiri menggunakan python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam