日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          "); //-->

          博客專(zhuān)欄

          EEPW首頁(yè) > 博客 > python視頻教程之socket使用實(shí)例詳解

          python視頻教程之socket使用實(shí)例詳解

          發(fā)布人:only1 時(shí)間:2020-09-23 來(lái)源:工程師 發(fā)布文章

            今天扣丁學(xué)堂給大家詳細(xì)介紹一下關(guān)于python視頻教程之socket使用實(shí)例,首先Python在網(wǎng)絡(luò)通訊方面功能強(qiáng)大,學(xué)習(xí)一下Socket通訊的基本方式吧。下面我們一起來(lái)看一下吧。

            UDP通訊:


            Server:


            importsocket


            port=8081


            s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)


            #從指定的端口,從任何發(fā)送者,接收UDP數(shù)據(jù)


            s.bind(('',port))


            print('正在等待接入...')


            whileTrue:


            #接收一個(gè)數(shù)據(jù)


            data,addr=s.recvfrom(1024)


            print('Received:',data,'from',addr)


            Client:


            importsocket


            port=8081


            host='localhost'


            s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)


            s.sendto(b'hello,thisisatestinfo!',(host,port))


            很簡(jiǎn)單。下面是TCP方式:


            Server:


            #-*-coding:utf-8-*-


            fromsocketimport*


            fromtimeimportctime


            HOST=''


            PORT=12345


            BUFSIZ=1024


            ADDR=(HOST,PORT)


            sock=socket(AF_INET,SOCK_STREAM)


            sock.bind(ADDR)


            sock.listen(5)


            whileTrue:


            print('waitingforconnection')


            tcpClientSock,addr=sock.accept()


            print('connectfrom',addr)


            whileTrue:


            try:


            data=tcpClientSock.recv(BUFSIZ)


            except:


            print(e)


            tcpClientSock.close()


            break


            ifnotdata:


            break


            s='Hi,yousendme:[%s]%s'%(ctime(),data.decode('utf8'))


            tcpClientSock.send(s.encode('utf8'))


            print([ctime()],':',data.decode('utf8'))


            tcpClientSock.close()


            sock.close()


            Client:


            #-*-coding:utf-8-*-


            fromsocketimport*


            classTcpClient:


            HOST='127.0.0.1'


            PORT=12345


            BUFSIZ=1024


            ADDR=(HOST,PORT)


            def__init__(self):


            self.client=socket(AF_INET,SOCK_STREAM)


            self.client.connect(self.ADDR)


            whileTrue:


            data=input('>')


            ifnotdata:


            break


            self.client.send(data.encode('utf8'))


            data=self.client.recv(self.BUFSIZ)


            ifnotdata:


            break


            print(data.decode('utf8'))


            if__name__=='__main__':


            client=TcpClient()


            上面的TCP方式有個(gè)問(wèn)題,不能退出,好吧,我們改造一下,使這個(gè)程序可以發(fā)送quit命令以退出:


            Server:


            #-*-coding:utf-8-*-


            fromsocketimport*


            fromtimeimportctime


            fromtimeimportlocaltime


            importtime


            HOST=''


            PORT=1122#設(shè)置偵聽(tīng)端口


            BUFSIZ=1024


            ADDR=(HOST,PORT)


            sock=socket(AF_INET,SOCK_STREAM)


            sock.bind(ADDR)


            sock.listen(5)


            #設(shè)置退出條件


            STOP_CHAT=False


            whilenotSTOP_CHAT:


            print('等待接入,偵聽(tīng)端口:%d'%(PORT))


            tcpClientSock,addr=sock.accept()


            print('接受連接,客戶端地址:',addr)


            whileTrue:


            try:


            data=tcpClientSock.recv(BUFSIZ)


            except:


            #print(e)


            tcpClientSock.close()


            break


            ifnotdata:


            break


            #python3使用bytes,所以要進(jìn)行編碼


            #s='%s發(fā)送給我的信息是:[%s]%s'%(addr[0],ctime(),data.decode('utf8'))


            #對(duì)日期進(jìn)行一下格式化


            ISOTIMEFORMAT='%Y-%m-%d%X'


            stime=time.strftime(ISOTIMEFORMAT,localtime())


            s='%s發(fā)送給我的信息是:%s'%(addr[0],data.decode('utf8'))


            tcpClientSock.send(s.encode('utf8'))


            print([stime],':',data.decode('utf8'))


            #如果輸入quit(忽略大小寫(xiě)),則程序退出


            STOP_CHAT=(data.decode('utf8').upper()=="QUIT")


            ifSTOP_CHAT:


            break


            tcpClientSock.close()


            sock.close()


            Client:


            #-*-coding:utf-8-*-


            fromsocketimport*


            classTcpClient:


            #測(cè)試,連接本機(jī)


            HOST='127.0.0.1'


            #設(shè)置偵聽(tīng)端口


            PORT=1122


            BUFSIZ=1024


            ADDR=(HOST,PORT)


            def__init__(self):


            self.client=socket(AF_INET,SOCK_STREAM)


            self.client.connect(self.ADDR)


            whileTrue:


            data=input('>')


            ifnotdata:


            break


            #python3傳遞的是bytes,所以要編碼


            self.client.send(data.encode('utf8'))


            print('發(fā)送信息到%s:%s'%(self.HOST,data))


            ifdata.upper()=="QUIT":


            break


            data=self.client.recv(self.BUFSIZ)


            ifnotdata:


            break


            print('從%s收到信息:%s'%(self.HOST,data.decode('utf8')))


            if__name__=='__main__':


            client=TcpClient()


            以上就是關(guān)于python模塊之socket實(shí)例的詳細(xì)介紹,最后想要了解更多關(guān)于Python發(fā)展前景趨勢(shì),請(qǐng)關(guān)注扣丁學(xué)堂官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的Python培訓(xùn)視頻教程系統(tǒng),通過(guò)千鋒扣丁學(xué)堂金牌講師在線錄制的第一套自適應(yīng)Python在線視頻課程系統(tǒng),讓你快速掌握Python從入門(mén)到精通開(kāi)發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂Python技術(shù)交流群:816572891。

          *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



          關(guān)鍵詞:

          技術(shù)專(zhuān)區(qū)

          關(guān)閉