写一个 循环接收数据的tcp客户端 python脚本
时间: 2023-10-01 14:04:36 浏览: 143
好的,以下是一个循环接收数据的TCP客户端Python脚本:
```python
import socket
# 定义服务器地址和端口号
SERVER_ADDRESS = 'localhost'
SERVER_PORT = 8888
# 创建TCP客户端socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect((SERVER_ADDRESS, SERVER_PORT))
# 循环接收数据
while True:
# 接收数据
data = client_socket.recv(1024)
# 如果接收到的数据为空,则跳出循环
if not data:
break
# 打印接收到的数据
print(data.decode('utf-8'))
# 关闭客户端socket
client_socket.close()
```
该脚本使用了Python标准库中的socket模块,创建了一个TCP客户端socket对象,并连接到指定的服务器地址和端口号。然后,使用一个while循环来不断接收数据,直到接收到的数据为空。在每次接收到数据后,使用decode方法将字节流转换为字符串,并打印出来。最后,关闭客户端socket。
相关问题
python 循环收发 tcp 服务端与客户端脚本
以下是一个简单的 Python TCP 服务端与客户端脚本,可以循环收发消息:
TCP 服务端脚本:
```python
import socket
SERVER_HOST = '0.0.0.0'
SERVER_PORT = 8080
def handle_client(client_socket):
while True:
# 接收客户端消息
request = client_socket.recv(1024)
if not request:
break
print(f'Received message: {request.decode()}')
# 发送响应消息
response = f'You sent me: {request.decode()}'.encode()
client_socket.send(response)
# 关闭客户端连接
client_socket.close()
# 创建 TCP 套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 绑定服务器地址和端口
server_socket.bind((SERVER_HOST, SERVER_PORT))
# 监听来自客户端的连接
server_socket.listen(1)
print(f'Server listening on {SERVER_HOST}:{SERVER_PORT}')
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
print(f'Client connected from {client_address[0]}:{client_address[1]}')
# 处理客户端请求
handle_client(client_socket)
```
TCP 客户端脚本:
```python
import socket
SERVER_HOST = '127.0.0.1'
SERVER_PORT = 8080
# 创建 TCP 套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect((SERVER_HOST, SERVER_PORT))
print(f'Connected to {SERVER_HOST}:{SERVER_PORT}')
while True:
# 发送消息
message = input('> ')
client_socket.send(message.encode())
# 接收响应消息
response = client_socket.recv(1024)
print(f'Received response: {response.decode()}')
```
使用时,先运行服务端脚本,再运行客户端脚本,即可在客户端输入消息并发送,服务端将会收到并打印消息,并返回响应消息给客户端。客户端将会收到响应消息并打印。
python tcp 循环接收文件
在Python中,你可以使用socket模块来创建TCP服务器,并通过循环来持续接收客户端发送的数据。这里是一个简单的例子,展示如何设置一个TCP监听服务,然后读取并处理接收到的文件内容:
```python
import socket
def receive_file(server_socket):
while True:
# 接收数据块,这里是4096字节大小的缓冲区
data = server_socket.recv(4096)
# 检查数据是否接收完成,如果没有则继续
if not data:
break
# 数据已经到达,可以在这里处理数据,例如解码成字符串
file_content += data.decode('utf-8')
# 收到所有数据后,关闭连接
server_socket.close()
# 创建一个TCP套接字
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口
server.bind(('localhost', 12345))
# 开始监听连接
server.listen()
print("Server is listening...")
connection, client_address = server.accept() # 等待客户端连接
try:
# 调用函数开始接收文件
file_content = ''
receive_file(connection)
# 输出接收到的内容
print(f"Received file content: {file_content}")
except Exception as e:
print(f"Error occurred: {e}")
# 关闭套接字
server.close()
```
这个脚本会一直等待新的客户端连接,一旦有连接请求,它会进入一个无限循环,接收来自客户端的数据直到连接关闭。注意这只是一个基本示例,实际应用中你可能需要添加错误处理、文件保存等更复杂的功能。
阅读全文