用PYTHON搭建文件共享
时间: 2024-09-13 09:10:09 浏览: 41
20120211_用http实现文件共享(python和go语言示例)1
使用Python搭建文件共享服务,我们可以利用Python的标准库或者第三方库来实现。一种常见的方法是使用`socket`库来创建一个简单的文件服务器和客户端。
以下是一个简单的示例,展示了如何用Python创建一个基本的文件共享服务器:
```python
import socket
# 配置服务器地址和端口
server_ip = '127.0.0.1'
server_port = 12345
buffer_size = 1024
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_socket.bind((server_ip, server_port))
# 监听连接
server_socket.listen(5)
print(f"[*] Listening as {server_ip}:{server_port}")
# 接受客户端连接
client_socket, address = server_socket.accept()
print(f"[+] {address} is connected.")
# 接收文件名
filename = client_socket.recv(1024).decode('utf-8')
print(f"[+] File requested: {filename}")
# 读取并发送文件
try:
with open(filename, 'rb') as file:
bytes_sent = 0
while True:
bytes_read = file.read(buffer_size)
if not bytes_read:
break
client_socket.sendall(bytes_read)
bytes_sent += len(bytes_read)
print(f"[+] Sent {bytes_sent} bytes")
except FileNotFoundError:
print(f"[+] {filename} not found.")
finally:
client_socket.close()
server_socket.close()
```
对于客户端,我们可以用类似的方式来连接服务器并请求文件:
```python
import socket
# 配置服务器地址和端口
server_ip = '127.0.0.1'
server_port = 12345
buffer_size = 1024
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
client_socket.connect((server_ip, server_port))
# 请求文件
filename = input("Enter the filename you want to download: ")
client_socket.send(filename.encode('utf-8'))
# 接收文件并保存
try:
with open(filename, 'wb') as file:
bytes_received = 0
while True:
bytes_read = client_socket.recv(buffer_size)
if not bytes_read:
break
file.write(bytes_read)
bytes_received += len(bytes_read)
print(f"[+] Received {bytes_received} bytes")
except IOError:
print("[-] Error writing file.")
finally:
client_socket.close()
```
请注意,这只是一个非常基础的例子,它没有包含错误处理、多线程、安全性等重要特性。在生产环境中,你可能需要考虑使用更加复杂和健壮的解决方案,如`http.server`模块、`flask`或`django`框架来构建Web服务,或者使用`FTP`、`SFTP`等协议来实现文件传输。
阅读全文