客户端和服务端使用TCP通讯,俩边可以同时进行数据收发的python代码,
时间: 2024-02-26 10:57:31 浏览: 66
以下是一个简单的客户端和服务端使用TCP通讯的Python代码示例:
服务端代码:
```python
import socket
HOST = '' # 表示监听所有的网络接口
PORT = 8888 # 监听的端口号
BUFFER_SIZE = 1024 # 缓冲区大小,即每次最多接收的数据量
# 创建套接字对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定监听的IP和端口号
server_socket.bind((HOST, PORT))
# 开始监听
server_socket.listen(1)
print('服务器已启动,等待客户端连接...')
# 等待客户端连接并接收数据
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
print(f'客户端 {client_address} 已连接')
while True:
# 接收客户端发送的数据
data = client_socket.recv(BUFFER_SIZE)
if not data:
break
print(f'收到来自 {client_address} 的消息: {data.decode()}')
# 发送响应数据
response = f'已收到消息: {data.decode()}'
client_socket.sendall(response.encode())
# 关闭客户端连接
client_socket.close()
print(f'客户端 {client_address} 已断开连接')
```
客户端代码:
```python
import socket
HOST = 'localhost' # 服务端IP地址
PORT = 8888 # 服务端监听的端口号
BUFFER_SIZE = 1024 # 缓冲区大小,即每次最多接收的数据量
# 创建套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect((HOST, PORT))
# 发送数据并接收响应数据
while True:
data = input('请输入发送给服务器的消息: ')
if not data:
break
client_socket.sendall(data.encode())
response = client_socket.recv(BUFFER_SIZE)
print(f'收到来自服务器的响应消息: {response.decode()}')
# 关闭连接
client_socket.close()
```
以上代码中,服务端在开始监听之后,会一直等待客户端连接,并在接收到客户端的消息后,将消息进行处理,并发送响应数据。客户端在连接服务器后,可以多次发送消息给服务器,并接收服务器的响应数据。在发送和接收数据时,需要对数据进行编码和解码,以确保数据能够正确地传输。
阅读全文