写一个服务器:
如果客户给服务器发送'1' -> 进入持续聊天界面('拜拜'是退出聊天,'over'是发送本次消息)
如果客户给服务器发送'2' -> 服务器就给客户端发送一个文件
如果客户给服务器发送'3' -> 关闭连接
1.server代码
import socket
sever = socket.socket()
sever.bind(('10.7.156.69', 8090))
sever.listen(512)
connection, address = sever.accept()
while 1:
print('等待接受信息')
re_message = connection.recv(1024).decode('utf-8')
if re_message == '1':
print('持续聊天开始')
while 1:
while 1:
re_message = connection.recv(1024).decode()
print('client:', re_message)
if re_message == 'over' or re_message == '拜拜':
break
if re_message == '拜拜':
print('持续聊天结束')
break
while 1:
message = input('server:')
connection.send(message.encode())
if message == 'over' or message == '拜拜':
break
if message == '拜拜':
print('持续聊天结束')
break
elif re_message == '2':
while 1:
file_name = connection.recv(1024).decode()
if file_name == '1' or file_name == '2':
print('发送文件开始')
with open('../serverFiles/' + file_name + '.jpg', 'rb') as f:
data = f.read()
connection.send(str(len(data)).encode())
connection.send(data)
print('文件发送结束')
break
else:
connection.send('0'.encode())
elif re_message == '3':
print('关闭连接!')
connection.close()
break
2.client代码
import socket
client = socket.socket()
client.connect(('10.7.156.69', 8090))
while 1:
print('1.持续聊天\n2.接受文件\n3.结束聊天')
message = input('client: ')
client.send(message.encode())
if message == '1':
print('持续聊天开始')
while 1:
while 1:
message = input('client: ')
client.send(message.encode())
if message == 'over' or message == '拜拜':
break
if message == '拜拜':
print('持续聊天结束')
break
while 1:
re_message = client.recv(1024).decode()
print('server:', re_message)
if re_message == 'over' or re_message == '拜拜':
break
if re_message == '拜拜':
print('持续聊天结束')
break
elif message == '2':
while 1:
file_name = input('请输入想要接收的文件:')
client.send(file_name.encode())
total_length = int(client.recv(1024).decode())
if total_length == 0:
print('该文件不存在')
else:
print('文件接收开始')
sum_data = bytes()
while 1:
re_message = client.recv(1024)
sum_data += re_message
if len(sum_data) == total_length:
with open('../clientFiles/1.jpg', 'wb') as f:
f.write(sum_data)
print('文件接收结束')
break
break
elif message == '3':
print('关闭连接!')
client.close()
break
else:
print('输入错误!')
3.client运行页面
1.持续聊天
2.接受文件
3.结束聊天
client: 1
持续聊天开始
client: 番茄
client: 番茄
client: 我是西瓜
client: 收到请回答
client: over
server: 西瓜
server: 西瓜
server: 我是番茄
server: 收到
server: over
client: 拜拜
持续聊天结束
1.持续聊天
2.接受文件
3.结束聊天
client: 2
请输入想要接收的文件:12
该文件不存在
请输入想要接收的文件:1
文件接收开始
文件接收结束
1.持续聊天
2.接受文件
3.结束聊天
client: 3
关闭连接!
Process finished with exit code 0
4.server运行页面
等待接受信息
持续聊天开始
client: 番茄
client: 番茄
client: 我是西瓜
client: 收到请回答
client: over
server:西瓜
server:西瓜
server:我是番茄
server:收到
server:over
client: 拜拜
持续聊天结束
等待接受信息
发送文件开始
文件发送结束
等待接受信息
关闭连接!
Process finished with exit code 0