Day17-作业

server

'''__author__==fubo'''

'''
写一个两个人的聊天系统,可以实现双向聊天功能。
# 如果发送的是普通的文字就直接打印,如果发送的文字是’拜拜’就关闭连接,
# 如果是一个网络地址就获取数据(保存到文本文件中),如果是图片地址就下载图片到本地


'''
import socket
import re
from requests import request
import json
if __name__ == '__main__':
    server=socket.socket()
    server.bind(('172.19.167.4',8089))
    server.listen(50)
    while True:
        client,addr=server.accept()
        while True:
            data=input('>>>')
            if data=='拜拜':
                client.close()
            elif re.match('^\..+\.[a-zA-Z]+',data):
                client.send('图片'.encode())
                with open(data,'rb')as f:
                    get_image=f.read()
                    client.send(get_image)
                    client.close()
                    break
            elif re.match('(https|ftp|file):.*',data):
                client.send('URL'.encode())
                client.send(data.encode())
            else:
                client.send('字符串'.encode())
                client.send(data.encode())
            str1=client.recv(1024)
            str2 = client.recv(1024)
            data1=str1.decode(encoding='utf-8')
            print(data1)
            if data1=='字符串':
                data2 = str2.decode(encoding='utf-8')
                print(data2)
            elif data1=='图片':
                data_image=bytes()
                while str2:
                    data_image+=str2
                    str2 = client.recv(1024)
                with open('./aaa.gif','wb') as f:
                    f.write(data_image)
                    # client.close()
            elif data1=='URL':
                data2 = str2.decode(encoding='utf-8')
                response=request('GET',data2)
                json1=response.json()
                with open('./url.json','w',encoding='utf-8')as f:
                    json.dump(json1,f)

client

'''__author__==fubo'''

'''


'''
import socket
import re
from requests import request
import json
if __name__ == '__main__':
    client=socket.socket()
    client.connect(('172.19.167.4',8089))
    while True:
        str1 = client.recv(1024)
        str2 = client.recv(1024)
        data1 = str1.decode(encoding='utf-8')
        print(data1)
        if data1 == '字符串':
            data2 = str2.decode(encoding='utf-8')
            print(data2)
        elif data1 == '图片':
            data_image = bytes()
            while str2:
                data_image += str2
                str2 = client.recv(1024)
            with open('./aaa.gif', 'wb') as f:
                f.write(data_image)
                # client.close()
        elif data1 == 'URL':
            data2 = str2.decode(encoding='utf-8')
            response = request('GET', data2)
            json1 = response.json()
            with open('./url.json', 'w', encoding='utf-8')as f:
                json.dump(json1, f)
        message = input('>>>')
        if message=='拜拜':
            client.close()
        elif re.match('^\..+\.[a-zA-Z]+',message):
            client.send('图片'.encode())
            with open(message,'rb')as f:
                get_image=f.read()
                client.send(get_image)
        elif re.fullmatch('(https|ftp|file):.*',message):
            client.send('URL'.encode())
            client.send(message.encode())
        else:
            client.send('字符串'.encode())
            client.send(message.encode())


server结果:

>>>asda
字符串
fsdf
>>>fs
字符串
fsf
>>>https://www.apiopen.top/satinApi?type=1&page=1
字符串
ew
>>>./1.gif

client结果:

字符串
asda
>>>fsdf
字符串
fs
>>>fsf
URL
>>>ew
图片
>>>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写一个两个人的聊天系统,可以实现双向聊天功能。如果发送的是普通的文字就直接打印,如果发送的文字是’拜拜’就关闭连接...
    七一欧阅读 1,157评论 0 1
  • 31-Justoneheart-北京-3 存款日 有用百度钱包存款,不是每天,一般是定期存,大家也可以试试,在银行...
    Justoneheart阅读 663评论 0 0
  • 七夜_174e阅读 3,890评论 0 3
  • 聊天服务器 聊天客户端
    LPP27149阅读 975评论 0 2
  • 我有一个同事,刚上班时,单位有一个年轻的音乐老师,长得很漂亮,这个同事不由心生爱慕。过几天,请音乐老师吃饭,,请了...
    张舟子阅读 1,358评论 0 0