创建收发文件的服务器端 客户端,<TCP/IP网络编程> Chap.5 基于TCP的服务器端/客户端(2)...
时间: 2024-03-17 10:47:50 浏览: 18
好的,这是一个基于TCP的服务器端/客户端的教程,可以用来创建收发文件的服务器端和客户端。
首先,我们需要创建一个服务器端程序,代码如下:
```python
import socket
HOST = '127.0.0.1' # 服务器端IP地址
PORT = 5000 # 服务器端端口号
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind((HOST, PORT))
# 监听客户端连接请求
server_socket.listen()
print('服务器已启动,等待客户端连接...')
while True:
# 接受客户端连接请求
client_socket, client_addr = server_socket.accept()
print('客户端已连接,地址为:', client_addr)
# 接收客户端发送的文件名
file_name = client_socket.recv(1024).decode('utf-8')
# 打开文件,准备接收数据
with open(file_name, 'wb') as f:
while True:
data = client_socket.recv(1024)
if not data:
break
f.write(data)
print('文件接收完成!')
# 关闭客户端连接
client_socket.close()
```
接下来,我们需要创建一个客户端程序,代码如下:
```python
import socket
HOST = '127.0.0.1' # 服务器端IP地址
PORT = 5000 # 服务器端端口号
# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器端
client_socket.connect((HOST, PORT))
# 发送文件名
file_name = 'test.txt'
client_socket.send(file_name.encode('utf-8'))
# 发送文件数据
with open(file_name, 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
client_socket.send(data)
print('文件发送完成!')
# 关闭客户端连接
client_socket.close()
```
以上代码实现了一个基于TCP协议的文件传输,可以根据需要进行修改和扩展。