python 文件传输 源码
时间: 2023-12-10 11:01:06 浏览: 127
以下是一个使用Python实现文件传输的简单示例代码:
```python
# 服务器端代码
import socket
def receive_file(port):
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', port))
# 监听连接
server_socket.listen(1)
print('等待连接...')
# 接受连接
client_socket, client_address = server_socket.accept()
print('连接成功!')
# 接收文件名
file_name = client_socket.recv(1024).decode('utf-8')
print('接收文件:', file_name)
# 接收文件内容并写入文件
with open(file_name, 'wb') as file:
while True:
data = client_socket.recv(1024)
if not data:
break
file.write(data)
# 关闭连接
client_socket.close()
server_socket.close()
print('文件接收完成!')
# 客户端代码
def send_file(host, port, file_path):
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect((host, port))
# 发送文件名
file_name = file_path.split('/')[-1]
client_socket.send(file_name.encode('utf-8'))
print('发送文件:', file_name)
# 发送文件内容
with open(file_path, 'rb') as file:
while True:
data = file.read(1024)
if not data:
break
client_socket.sendall(data)
# 关闭连接
client_socket.close()
print('文件发送完成!')
# 使用示例
if __name__ == '__main__':
# 启动服务器端
server_port = 8888
receive_file(server_port)
# 启动客户端
client_host = 'localhost'
client_port = 8888
file_path = 'example.txt'
send_file(client_host, client_port, file_path)
```
以上是一个简单的Python文件传输的实例,其中包含一个服务器端和一个客户端。服务器端通过绑定指定的端口,监听来自客户端的连接请求,收到连接后,接收客户端发送的文件名和文件内容,并将文件内容写入文件。客户端通过指定服务器的IP地址和端口,连接到服务器,发送指定文件的文件名和文件内容给服务器。在服务器端和客户端中,我们使用了一个固定的缓冲区大小(1024字节)来读取和发送文件内容,根据实际需求可以进行调整。
阅读全文