一個使用TCP協定實作可連續對話的客戶端範例程式碼:
import socket # 客户端配置 HOST = 'localhost' PORT = 12345 # 创建TCP套接字并连接服务器 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((HOST, PORT)) while True: # 获取用户输入 message = input("请输入要发送的消息:") # 发送消息到服务器 client_socket.sendall(message.encode("utf-8")) # 接收服务器传回的消息 data = client_socket.recv(1024) print(f"收到来自服务器的消息:{data.decode('utf-8')}") # 关闭套接字 client_socket.close()
在這個範例中,我們先建立了一個TCP套接字,並使用connect()
函數連接到指定的伺服器位址和連接埠。然後,我們透過使用者輸入不斷發送訊息到伺服器,並等待伺服器回應並顯示其結果。請注意,由於TCP是面向連接的協議,因此我們可以透過該連接保證訊息的可靠性和順序性。
最後,我們透過close()
函數關閉套接字。
要注意的是,當我們使用TCP協定時,需要確保服務端也使用TCP協定進行對應的通訊。
以下是使用TCP協定實作可連續對話的服務端範例程式碼:
import socket # 服务器配置 HOST = 'localhost' PORT = 12345 # 创建TCP套接字并绑定到地址和端口 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((HOST, PORT)) # 监听连接 server_socket.listen() # 接受连接并与客户端建立通信 client_socket, client_address = server_socket.accept() print(f"与客户端 {client_address} 建立连接。") while True: # 接收客户端传来的消息 data = client_socket.recv(1024) print(f"来自{client_address}的消息:{data.decode('utf-8')}") if not data: # 如果客户端关闭了连接,则退出循环 break # 获取用户输入 message = input("请输入要发送的消息:") # 发送消息到客户端 client_socket.sendall(message.encode("uft-8")) # 关闭套接字 client_socket.close() server_socket.close()
在這個範例中,我們先建立了一個TCP套接字,並將其綁定到指定的位址和連接埠。然後,我們透過listen()
函數開始監聽客戶端連線請求。
當有客戶端連線時,我們呼叫accept()
函數接受連線並傳回客戶端套接字和位址。然後,我們透過循環不斷接收和發送數據,從而實現了可連續對話的功能。
請注意,由於TCP是面向連接的協議,因此我們可以透過該連接來保證訊息的可靠性和順序性。最後,我們透過close()
函數關閉套接字。
要注意的是,在實際開發中,我們可能需要為每個連線建立一個新的執行緒或進程,以便能夠同時處理多個客戶端連線。
以上是python中怎麼使用TCP實作對話客戶端和伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!