Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie TCP, um die Konversation zwischen Client und Server in Python zu implementieren

So verwenden Sie TCP, um die Konversation zwischen Client und Server in Python zu implementieren

WBOY
WBOYnach vorne
2023-05-17 15:40:551419Durchsuche

TCP-Client

Ein Beispielcode für einen Client, der das TCP-Protokoll verwendet, um kontinuierliche Konversationen zu implementieren:

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()

In diesem Beispiel erstellen wir zunächst einen TCP-Socket und verwenden connect(). Die Funktion stellt eine Verbindung her die angegebene Serveradresse und den angegebenen Port. Anschließend senden wir kontinuierlich Nachrichten mit Benutzereingaben an den Server und warten darauf, dass der Server antwortet und seine Ergebnisse anzeigt. Da es sich bei TCP um ein verbindungsorientiertes Protokoll handelt, können wir die Zuverlässigkeit und Ordnung der Nachrichten über die Verbindung garantieren. 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()

Abschließend schließen wir den Socket über die Funktion close().

Es ist zu beachten, dass wir bei Verwendung des TCP-Protokolls sicherstellen müssen, dass der Server auch das TCP-Protokoll für die entsprechende Kommunikation verwendet. 🎜🎜TCP-Server🎜🎜Das Folgende ist ein serverseitiger Beispielcode, der das TCP-Protokoll verwendet, um kontinuierliche Konversationen zu implementieren: 🎜rrreee🎜In diesem Beispiel erstellen wir zunächst einen TCP-Socket und binden ihn an die angegebene Adresse und den angegebenen Port. Dann beginnen wir mit der Überwachung auf Client-Verbindungsanfragen über die Funktion listen(). 🎜🎜Wenn eine Client-Verbindung besteht, rufen wir die Funktion accept() auf, um die Verbindung zu akzeptieren und den Client-Socket und die Adresse zurückzugeben. Anschließend empfangen und senden wir weiterhin Daten über eine Schleife und ermöglichen so eine kontinuierliche Konversation. 🎜🎜Bitte beachten Sie, dass wir die Zuverlässigkeit und Ordnungsmäßigkeit der Nachrichten über die Verbindung garantieren können, da es sich bei TCP um ein verbindungsorientiertes Protokoll handelt. Abschließend schließen wir den Socket über die Funktion close(). 🎜🎜Es ist zu beachten, dass wir in der tatsächlichen Entwicklung möglicherweise für jede Verbindung einen neuen Thread oder Prozess erstellen müssen, um mehrere Clientverbindungen gleichzeitig verarbeiten zu können. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie TCP, um die Konversation zwischen Client und Server in Python zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen