网络编程作业

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

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())
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 1,243评论 0 10
  • 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编...
    程序员欧阳阅读 2,043评论 1 37
  • 时间总是在不知不觉中溜走,已经很久没有看过简书的文章了,自己也没有再写过文章。现在回过头来看一下自己写的上一篇文章...
    yulingluo阅读 267评论 0 0
  • 财富目标:4、5、6月每月月收入稳定上万元。 2018.4.21 一、好种子: 1、早课诵经,金刚心咒216遍,文...
    陈热闹阅读 224评论 0 0