So erstellen Sie Ihren eigenen Chatroom mit Python

PHPz
Freigeben: 2023-05-11 20:46:04
nach vorne
1128 Leute haben es durchsucht

    1. Grundkonzepte der Netzwerkprogrammierung

    1. IP-Adresse: Die eindeutige Kennung jedes Geräts im Netzwerk, die zur Lokalisierung des Geräts im Netzwerk verwendet wird.

    2. Port: identifiziert verschiedene Netzwerkanwendungen auf dem Gerät, und ein Port entspricht einem bestimmten Dienst oder einer bestimmten Anwendung.

    3. Protokoll: Regeln für die Datenkommunikation, wie TCP und UDP.

    2. Einführung und Prinzipien der Socket-Programmierung

    1. Socket ist ein Kommunikationshandle, das zur Übertragung von Daten im Netzwerk verwendet wird.

    2. Pythons socket-Bibliothek bietet einen umfangreichen Satz an Funktionen und Klassen für die Implementierung der Netzwerkprogrammierung.

    3. Socket-Programmierung umfasst hauptsächlich Vorgänge wie das Erstellen von Socket-Objekten, das Binden von Adressen und Ports, das Überwachen von Verbindungen, das Akzeptieren und Senden von Daten usw.

    3. Chatroom-Architektur und funktionale Anforderungen

    1. Der Chatroom ist in Serverseite und Clientseite unterteilt.

    2. Der Server ist dafür verantwortlich, die Verbindungsanfrage des Clients zu empfangen und die Nachricht des Clients weiterzuleiten.

    3. Der Client ist dafür verantwortlich, eine Verbindung mit dem Server herzustellen und Nachrichten zu senden und zu empfangen.

    4. Der Chatroom muss mehrere Kunden gleichzeitig online unterstützen und Nachrichten in Echtzeit empfangen und senden können.

    4. Implementieren Sie die Chatroom-Serverseite

    1. Verwenden Sie Socket, um ein serverseitiges Socket-Objekt zu erstellen.

    import socket
    import threading
     
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    Nach dem Login kopieren

    2. IP-Adresse und Port binden.

    server.bind(("0.0.0.0", 8080))
    Nach dem Login kopieren

    3. Achten Sie auf Kundenverbindungen.

    server.listen(5)
    Nach dem Login kopieren

    4. Wenn ein neuer Client eine Verbindung herstellt, fügen Sie ihn zur Liste der verbundenen Clients hinzu.

    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()
    Nach dem Login kopieren

    5. Verwenden Sie Multithreading, um den Nachrichtenempfang und -versand für jeden Client zu verwalten.

    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()
    ``
    Nach dem Login kopieren

    6. Wenn der Client die Verbindung trennt, entfernen Sie ihn aus der Client-Liste

        clients.remove(client_socket)
        client_socket.close()
    Nach dem Login kopieren

    7. Senden Sie die Nachricht an andere Clients.

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

    8. Der vollständige Code des Chatroom-Servers:

    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()
    Nach dem Login kopieren

    5. Implementieren Sie den Chatroom-Client

    1. Verwenden Sie socket, um ein Client-Socket-Objekt zu erstellen.

    import socket
    import threading
     
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    Nach dem Login kopieren

    2. Stellen Sie eine Verbindung zur IP-Adresse und zum Port des Servers her.

    client.connect(("127.0.0.1", 8080))
    Nach dem Login kopieren

    3. Verwenden Sie Multithreading, um vom Server gesendete Nachrichten zu verarbeiten.

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

    4. Empfangen Sie die vom Benutzer eingegebene Nachricht und senden Sie sie an den Server.

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

    5. Der vollständige Code des Chatroom-Clients:

    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"))
    Nach dem Login kopieren

    6. Testen Sie den Chatroom

    Starten Sie den Chatroom-Server bzw. mehrere Clients. Senden Sie eine Nachricht an den Client und beobachten Sie, ob andere Clients die Nachricht empfangen können. Versuchen Sie, den Client zu trennen und beobachten Sie die Leistung des Servers und anderer Clients.

    Das obige ist der detaillierte Inhalt vonSo erstellen Sie Ihren eigenen Chatroom mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!