網(wǎng)絡(luò)編程作業(yè)

編寫一個能夠持續(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())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評論 19 139
  • 計算機網(wǎng)絡(luò)概述 網(wǎng)絡(luò)編程的實質(zhì)就是兩個(或多個)設(shè)備(例如計算機)之間的數(shù)據(jù)傳輸。 按照計算機網(wǎng)絡(luò)的定義,通過一定...
    蛋炒飯_By閱讀 1,369評論 0 10
  • 網(wǎng)絡(luò)編程 網(wǎng)絡(luò)編程對于很多的初學(xué)者來說,都是很向往的一種編程技能,但是很多的初學(xué)者卻因為很長一段時間無法進入網(wǎng)絡(luò)編...
    程序員歐陽閱讀 2,105評論 1 37
  • 時間總是在不知不覺中溜走,已經(jīng)很久沒有看過簡書的文章了,自己也沒有再寫過文章。現(xiàn)在回過頭來看一下自己寫的上一篇文章...
    yulingluo閱讀 290評論 0 0
  • 財富目標(biāo):4、5、6月每月月收入穩(wěn)定上萬元。 2018.4.21 一、好種子: 1、早課誦經(jīng),金剛心咒216遍,文...
    陳熱鬧閱讀 248評論 0 0

友情鏈接更多精彩內(nèi)容