day_17作业

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

服务器端

import socket
from requests import request
import re

if __name__ == '__main__':
    # 1.创建服务器
    server = socket.socket()

    # 2.绑定ip和端口
    server.bind(('10.7.181.81', 8080))

    # 3.监听
    server.listen(50)

    while True:
        conversation, addr = server.accept()

        while True:

            # 4.接收数据
            data = conversation.recv(1024)
            data = data.decode(encoding='utf-8')


            # 如果输入图片地址就下载图片到本地
            str1 = r'\.\/.+\.(jpg|png|bmp|jpeg)'
            if re.fullmatch(str1, data):
                # 接收完地址后保存并打印
                with open(data, 'rb') as f:
                    content = f.read()
                    print('图片下载成功!')

                # 获取完数据后存储到本地
                with open('./ccc.png', 'wb') as f:
                    f.write(content)

            # 输入拜拜,结束对话
            elif data == '拜拜':
                print(data)
                conversation.close()
                break

            # 字符串
            else:
                str1 = r'(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]'
                # 如果是网络地址就获取数据
                if re.fullmatch(str1, data):
                    response = request('GET', data)
                    text = response.text
                    with open('./text.txt', 'w', encoding='utf-8') as f:
                        f.write(text)
                        print('数据下载成功!')
                else:
                    # 是普通的文字就直接打印
                    print(data)


            # 5.发送数据
            send_data = input('>>>')
            if send_data == '拜拜':
                conversation.send(send_data.encode())
                conversation.close()
                break
            conversation.send(send_data.encode())

        break

客户端

import socket
from requests import request
import re
if __name__ == '__main__':
    # 1.创建客户端
    client = socket.socket()
    # 2.连接服务器
    client.connect(('10.7.181.81', 8080))

    while True:
        # 3.发送数据
        send_data = input('>>>')
        if send_data == '拜拜':
            client.send(send_data.encode())
            client.close()
            break
        client.send(send_data.encode())


        # 4.接收数据
        data = client.recv(1024)
        data = data.decode(encoding='utf-8')

        # 如果输入图片地址就下载图片到本地
        str1 = r'\.\/.+\.(jpg|png|bmp|jpeg)'
        if re.fullmatch(str1, data):
            # 接收完地址后保存并打印
            with open(data, 'rb') as f:
                content = f.read()
                print('图片下载成功!')

            # 获取完数据后存储到本地
            with open('./ccc.png', 'wb') as f:
                f.write(content)

        # 输入拜拜,结束对话
        elif data == '拜拜':
            print(data)
            client.close()
            break

        # 字符串
        else:
            str1 = r'(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]'
            # 如果是网络地址就获取数据
            if re.fullmatch(str1, data):
                response = request('GET', data)
                text = response.text
                with open('./text.txt', 'w', encoding='utf-8') as f:
                    f.write(text)
                    print('数据下载成功!')
            else:
                # 是普通的文字就直接打印
                print(data)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,003评论 3 119
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,192评论 4 61
  • 你吃着炸鸡, 可是我却没有啤酒。 你嘟着粉红色的嘴唇, 眯着小眼睛, 冲到我的怀里乱蹭。 你曾说你为了爱情, 放弃...
    囚青鸟阅读 126评论 0 1
  • 雷军说:“只要站在风口,一头猪都能飞起来”。于是互联网家装飞起来了,一如当年的电商,消费者的习惯变了,一切都...
    谢有为阅读 443评论 0 0
  • 其实,我很想理解其实,就像我想要理解生命中的一切。 我很想表述一个状态,其实不是这样,其实我已经在表述了。 我很想...
    叶落风狂舞阅读 171评论 0 1