作业:
第一题:
写一个客户端和服务器的套接字:
客户端连接服务器后展示界面:
===========================
- 需要图片
- 需要文字
- 通知结束
==========================
请选择:
如果客户端选1, 服务器给客户端发送一张图片,客户端保存图片到本地
如果客户端选2, 服务器输入一段文字发送给客户端, 客户端将文字保存在一个message.txt文件中
如果客户端选3,通知服务器关闭连接,并且客户端结束
服务器端
import socket
# 创建服务器
server = socket.socket()
# 绑定ip和端口号
server.bind(('10.10.10.108', 8081))
# 监听端口
server.listen(100)
print('开始监听')
while True:
# 等待连接
print('等待连接')
conversation, addr = server.accept()
print('%s 连接' % addr[0])
with open('./files/main_page.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 客户端请求 给客户端发送主页消息
conversation.send(content.encode('utf-8'))
while True:
value = conversation.recv(1024)
value = value.decode('utf-8')
if value == '3':
print('回话结束')
conversation.close()
continue
elif value == '1':
with open('./files/new.jpg', 'rb') as f:
data_bytes = f.read()
conversation.send(data_bytes)
conversation.close()
print('图片已发送')
continue
elif value == '2':
message = '你好吗?'
conversation.send(message.encode('utf-8'))
continue
客户端
import socket
# 创建客户端
client = socket.socket()
# 连接服务器
client.connect(('10.10.10.108', 8081))
main_page = client.recv(2048)
# 显示消息
main_page = main_page.decode('utf-8')
# print(main_page)
# 接收消息
while True:
print(main_page)
value = input('请选择:')
if value == '3':
client.send('3'.encode('utf-8'))
client.close()
break
# message_re = client.recv(1024)
elif value == '1':
client.send('1'.encode('utf-8'))
message_re = client.recv(1024)
data = bytes()
i = 1
while message_re:
i += 1
# print('接收图片')
data += message_re
message_re = client.recv(1024)
with open('./re_file/re_file.jpg', 'wb') as f:
f.write(data)
print('图片接收完成')
elif value == '2':
client.send('2'.encode('utf-8'))
message_re = client.recv(1024)
message_re = message_re.decode('utf-8')
with open('./re_file/message.txt', 'w', encoding='utf-8') as f:
f.write(message_re)
print('文字接收完成')
continue
else:
print('输入错误,请重新输入!')
continue
第二题:
请求接口:https://www.apiopen.top/satinApi?type=1&page=1 获取网络数据。
将内容中所有的name和text对应的值取出,并且保存到一个json文件中,保存的格式:
[{“name”:”张三”, “text”:”哈哈,让我们一起自由的飞翔”}, {“name”:”喒你家玻璃”, “text”:”截图暂停,截到的将会是对你爱情的预言三词!”}]
import requests
import json
import re
# 请求数据
url = 'https://www.apiopen.top/satinApi?type=1&page=1'
result = requests.get(url)
contents = result.text
re_dict = r'({.*?})+?'
results = re.findall(r'\[.*\]', contents)
content1 = results[0][1:-1]
print(content1)
res = re.findall(re_dict, content1)
print(len(res))
content = []
for str1 in res:
name = re.findall(r'"name":".+?"', str1)
texts = re.findall(r'"text":".+?"', str1)
print(name, texts)
content.append({name[0]:texts[0]})
print(content)
with open('./files/data.json', 'w', encoding='utf-8') as f:
json.dump(content, f)