Bagaimana untuk membina bilik sembang anda sendiri menggunakan python

PHPz
Lepaskan: 2023-05-11 20:46:04
ke hadapan
1093 orang telah melayarinya

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

    2. Ikat alamat IP dan port.

    server.bind(("0.0.0.0", 8080))
    Salin selepas log masuk

    3.

    server.listen(5)
    Salin selepas log masuk

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

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

    6. Apabila pelanggan memutuskan sambungan, keluarkannya daripada senarai pelanggan

        clients.remove(client_socket)
        client_socket.close()
    Salin selepas log masuk

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

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

    5. Laksanakan klien bilik sembang

    1.

    import socket
    import threading
     
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    Salin selepas log masuk

    2. Sambung ke alamat IP dan port pelayan.

    client.connect(("127.0.0.1", 8080))
    Salin selepas log masuk

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

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

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

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

    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!

    Label berkaitan:
    sumber:yisu.com
    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!