IP アドレス: ネットワーク内の各デバイスの一意の識別子であり、接続に使用されます。ネットワークへの測位機器。
ポート: デバイス上のさまざまなネットワーク アプリケーションを識別します。1 つのポートが特定のサービスまたはアプリケーションに対応します。
プロトコル: TCP や UDP などのデータ通信のルール。
ソケットは、ネットワーク内でデータを送信するために使用される通信ハンドルです。
Python の socket
ライブラリは、ネットワーク プログラミングを実装するための豊富な関数とクラスを提供します。
ソケット プログラミングには、主に、ソケット オブジェクトの作成、アドレスとポートのバインド、接続の監視、データの送受信などの操作が含まれます。
チャット ルームはサーバー側とクライアント側に分かれています。
サーバーは、クライアントの接続リクエストを受信し、クライアントのメッセージを転送する責任があります。
クライアントは、サーバーとの接続を確立し、メッセージを送受信する必要があります。
チャット ルームは、複数のクライアントをオンラインで同時にサポートし、リアルタイムでメッセージを送受信する必要があります。
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"))
チャット ルーム サーバーと複数のクライアントをそれぞれ起動します。クライアントでメッセージを送信し、他のクライアントがメッセージを受信できるかどうかを観察します。クライアントを切断して、サーバーと他のクライアントの動作を観察してみてください。
以上がPythonを使用して独自のチャットルームを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。