編寫一個能夠持續(xù)聊天的服務(wù)器和客戶端,當(dāng)客戶端發(fā)送“拜拜”的時候,斷開服務(wù)器和客戶端的連接,發(fā)送一個網(wǎng)址,能夠下載網(wǎng)址內(nèi)容,當(dāng)內(nèi)容是圖片是,能夠?qū)D片保存到本地
server.py
import socket
import requests
from requests import request
import re
if __name__ == '__main__':
server=socket.socket()
server.bind(('10.7.181.70',8080))
server.listen(512)
#accept()會阻塞線程,當(dāng)有客戶端連接時,開始執(zhí)行
while True:
conversation,address=server.accept()
while True:
message=input('我:')
#給客戶端發(fā)送消息
#字符串轉(zhuǎn)換成二進制
conversation.send(message.encode())
#接收客戶端的信息
message_re=conversation.recv(1024).decode(encoding='utf-8')
#如果是拜拜
if message_re=='拜拜':
conversation.close()
break
#判斷是否是網(wǎng)站
elif re.fullmatch(r'http://(\w\.){2}(\w+)/[\w?=&%@/\.]+ ',message_re):
print('是網(wǎng)站')
match=re.search(r'\.png|\.jpg|\.gif|\.jpeg|',message_re)
#如果是圖片
if match:
#返回的是服務(wù)器的響應(yīng)
response=requests.request('GET',message_re)
#獲取服務(wù)器返回的響應(yīng)頭
print(response.headers)
#獲取響應(yīng)體的二進制
content=response.content
with open('./image'+match.group(),'wb')as f:
f.write(content)
else:
response=requests.request('GET',message_re)
txt=response.text
with open('./text','a',encoding='utf-8')as f:
f.write(txt)
else:
print(message_re)
client.py
import socket
if __name__ == '__main__':
client = socket.socket()
client.connect(('10.7.181.117', 8050))
while True:
# 接收服務(wù)器返回的信息
re_message = client.recv(1024).decode(encoding='utf-8')
print(re_message)
# 發(fā)送消息
message = input('>>>')
# message = '好吧abc'
client.send(message.encode())