Alamat IP: pengecam unik untuk setiap peranti dalam rangkaian, digunakan untuk menyambung ke rangkaian peralatan Penentududukan.
Port: mengenal pasti aplikasi rangkaian yang berbeza pada peranti Satu port sepadan dengan perkhidmatan atau aplikasi tertentu.
Protokol: peraturan untuk komunikasi data, seperti TCP dan UDP.
Soket ialah pemegang komunikasi yang digunakan untuk menghantar data dalam rangkaian. Pustaka
Python's socket
menyediakan set fungsi dan kelas yang kaya untuk melaksanakan pengaturcaraan rangkaian.
Pengaturcaraan soket terutamanya termasuk operasi seperti mencipta objek soket, alamat dan port yang mengikat, memantau sambungan, menerima dan menghantar data, dsb.
Bilik sembang dibahagikan kepada bahagian pelayan dan bahagian pelanggan.
Pelayan bertanggungjawab untuk menerima permintaan sambungan pelanggan dan memajukan mesej pelanggan.
Pelanggan bertanggungjawab untuk mewujudkan sambungan dengan pelayan dan menghantar serta menerima mesej.
Bilik sembang perlu menyokong berbilang pelanggan dalam talian pada masa yang sama dan menerima serta menghantar mesej dalam masa nyata.
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"))
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!