IP-Adresse: Die eindeutige Kennung jedes Geräts im Netzwerk, die zur Lokalisierung des Geräts im Netzwerk verwendet wird.
Port: identifiziert verschiedene Netzwerkanwendungen auf dem Gerät, und ein Port entspricht einem bestimmten Dienst oder einer bestimmten Anwendung.
Protokoll: Regeln für die Datenkommunikation, wie TCP und UDP.
Socket ist ein Kommunikationshandle, das zur Übertragung von Daten im Netzwerk verwendet wird.
Pythons socket
-Bibliothek bietet einen umfangreichen Satz an Funktionen und Klassen für die Implementierung der Netzwerkprogrammierung.
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.
Der Chatroom ist in Serverseite und Clientseite unterteilt.
Der Server ist dafür verantwortlich, die Verbindungsanfrage des Clients zu empfangen und die Nachricht des Clients weiterzuleiten.
Der Client ist dafür verantwortlich, eine Verbindung mit dem Server herzustellen und Nachrichten zu senden und zu empfangen.
Der Chatroom muss mehrere Kunden gleichzeitig online unterstützen und Nachrichten in Echtzeit empfangen und senden können.
import socket import threading server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("0.0.0.0", 8080))
server.listen(5)
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()
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() ``
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"))
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()
import socket import threading client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("127.0.0.1", 8080))
def receive_message(): while True: message = client.recv(1024).decode("utf-8") print(message) thread = threading.Thread(target=receive_message) thread.start()
while True: message = input() client.send(message.encode("utf-8"))
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"))
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!