首頁 >後端開發 >Python教學 >python中怎麼使用TCP實作對話客戶端和伺服器

python中怎麼使用TCP實作對話客戶端和伺服器

WBOY
WBOY轉載
2023-05-17 15:40:551424瀏覽

TCP 用戶端

一個使用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 服務端

以下是使用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中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除