欢迎访问宙启技术站
智能推送

Python中Client()与Server()的通信示例

发布时间:2023-12-28 05:26:58

在Python中,Client()Server()socket 模块的两个重要类,用于实现网络通信。下面是一个简单的示例,展示了如何使用 Client()Server() 类进行通信。

首先,我们需要导入 socket 模块,并创建一个 Server() 实例来监听特定的主机和端口:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 12345))
server.listen(5)

上述代码中,我们使用 socket.socket() 创建了一个 TCP/IPsocket 对象,并调用 bind() 方法将其绑定到 localhost12345 端口上。然后,我们调用 listen() 方法来开始监听客户端连接,参数 5 表示允许同时接受的最大连接数。

接下来,我们创建一个简单的 echo 服务器,它能够接收来自客户端的数据,并将其原样返回给客户端:

while True:
    client, address = server.accept()
    print(f"Connection from {address} has been established!")
    data = client.recv(1024).decode()
    client.send(data.encode())
    client.close()

在以上代码中,server.accept() 方法用于接受客户端的连接请求,并返回一个新的 socket 对象 client,以及客户端的地址 address。然后,我们使用 client.recv(1024) 方法接收来自客户端的数据,并使用 decode() 方法将其转换为字符串。接着,我们使用 client.send() 方法将数据发送回客户端,并使用 encode() 方法将其转换为字节流。最后,我们调用 client.close() 关闭与客户端的连接。

下面是一个使用 Client() 类向上述的服务器发送数据的示例:

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 12345))

message = "Hello, server!"
client.send(message.encode())
response = client.recv(1024).decode()

print(f"Response from server: {response}")

client.close()

在以上示例中,我们创建了一个 Client() 对象,并使用 connect() 方法连接到特定的主机和端口。然后,我们使用 send() 方法发送一条消息给服务器,并使用 recv() 方法接收来自服务器的响应。最后,我们打印出服务器的响应,并调用 close() 方法关闭客户端的连接。

综上所述,以上示例演示了如何使用 Client()Server() 类进行简单的网络通信。你可以在其中添加逻辑以实现更复杂的通信需求,比如发送和接收数据的循环,以及处理异常等。