二、创建收发文件的服务器/客服端,实现如下功能:(35分) (1)客户端接受用户输入的传输文件名。 (2)客户端请求服务器端在指定文件夹下传输该文件名所指的文件。 (3)如果指定文件存在,服务器端就将其发送给客户端;反之,则断开连接。
时间: 2023-12-23 18:02:25 浏览: 100
建立服务器与客户端连接,可以进行数据传输。
3星 · 编辑精心推荐
好的,我了解了您的问题。这个问题需要用到网络编程的知识和一些文件操作的函数。我这里提供一个基于 Python 的实现,您可以参考一下。
首先是服务器端代码:
```python
import socket
import os
# 创建一个 TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定到本地地址和端口
server_address = ('', 8888)
server_socket.bind(server_address)
# 开始监听
server_socket.listen(1)
print('等待客户端连接...')
while True:
# 接受客户端连接请求
client_socket, client_address = server_socket.accept()
print('来自 {} 的连接'.format(client_address))
# 接收客户端发送的文件名
filename = client_socket.recv(1024).decode()
# 检查文件是否存在
if os.path.isfile(filename):
print('文件 {} 存在,开始传输...'.format(filename))
# 打开文件并读取数据
with open(filename, 'rb') as f:
file_data = f.read()
# 发送文件数据
client_socket.sendall(file_data)
print('传输完成')
else:
print('文件 {} 不存在,断开连接'.format(filename))
# 关闭连接
client_socket.close()
```
然后是客户端代码:
```python
import socket
# 创建一个 TCP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器端
server_address = ('127.0.0.1', 8888)
client_socket.connect(server_address)
# 输入要传输的文件名
filename = input('请输入要传输的文件名:')
# 发送文件名到服务器端
client_socket.sendall(filename.encode())
# 接收服务器端发送的数据并保存到文件
with open(filename, 'wb') as f:
while True:
data = client_socket.recv(1024)
if not data:
break
f.write(data)
print('传输完成')
# 关闭连接
client_socket.close()
```
这个代码实现了一个简单的文件传输功能,您可以根据自己的需求进行改进。同时,需要注意的是,这个代码没有做任何安全检查,如果您要在生产环境中使用的话,需要加上一些安全措施,避免被攻击。
阅读全文