网络编程作业

编写一个能够持续聊天的服务器和客户端,当客户端发送“拜拜”的时候,断开服务器和客户端的连接,发送一个网址,能够下载网址内容,当内容是图片是,能够将图片保存到本地

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()会阻塞线程,当有客户端连接时,开始执行
    while True:
        conversation,address=server.accept()
        while True:
            message=input('我:')
            #给客户端发送消息
            #字符串转换成二进制
            conversation.send(message.encode())
            #接收客户端的信息
            message_re=conversation.recv(1024).decode(encoding='utf-8')
            #如果是拜拜
            if message_re=='拜拜':
                conversation.close()
                break
            #判断是否是网站
            elif re.fullmatch(r'http://(\w\.){2}(\w+)/[\w?=&%@/\.]+ ',message_re):
                print('是网站')
                match=re.search(r'\.png|\.jpg|\.gif|\.jpeg|',message_re)
                #如果是图片
                if match:
                    #返回的是服务器的响应
                    response=requests.request('GET',message_re)

                    #获取服务器返回的响应头
                    print(response.headers)
                    #获取响应体的二进制
                    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:
        # 接收服务器返回的信息
        re_message = client.recv(1024).decode(encoding='utf-8')
        print(re_message)

        # 发送消息
        message = input('>>>')
        # message = '好吧abc'
        client.send(message.encode())

你可能感兴趣的:(网络编程作业)