番外:socketserver用法


進擊のpython

*****

番外:socketserver使用


是不是被一般寫法,多進程寫法,多線程寫法甚至是協程寫法搞的不可開交

雲里霧里,仿佛將要放棄~再配上服務器要服務多個客戶端

完蛋了,全都亂了~那今天就給你推薦一個好的模塊!sockerserver


具體操作:

import socketserver                              #1、引入模塊
class MyServer(socketserver.BaseRequestHandler): #2、自己寫一個類,類名自己隨便定義,然后繼承socketserver這個模塊里面的BaseRequestHandler這個類

    def handle(self):                            #3、寫一個handle方法,必須叫這個名字
        #self.request                            #6、self.request 相當於一個conn

        self.request.recv(1024)                  #7、收消息
        msg = '親,學會了嗎'
        self.request.send(bytes(msg,encoding='utf-8')) #8、發消息

        self.request.close()                     #9、關閉連接
        pass
if __name__ == '__mian__':
    server = socketserver.ThreadingTCPServer(('127.0.0.1',8090),MyServer)#4、使用socketserver的ThreadingTCPServer這個類,將IP和端口的元祖傳進去,還需要將上面咱們自己定義的類傳進去,得到一個對象,相當於我們通過它進行了bind、listen
    server.serve_forever()                       #5、使用我們上面這個類的對象來執行serve_forever()方法,他的作用就是說,我的服務一直開啟着,就像京東一樣,不能關閉網站,對吧,並且serve_forever()幫我們進行了accept


#注意:
#有socketserver 那么有socketclient的嗎?
#當然不會有,我要作為客戶去訪問京東的時候,京東幫我也客戶端了嗎,客戶端是不是在我們自己的電腦啊,並且socketserver對客戶端沒有太高的要求,只需要自己寫一些socket就行了。

把注釋去掉:

import socketserver


class MyServer(socketserver.BaseRequestHandler):

    def handle(self):
        # self.request                            

        self.request.recv(1024)
        msg = '親,學會了嗎'
        self.request.send(bytes(msg, encoding='utf-8'))

        self.request.close()

        pass


if __name__ == '__mian__':
    server = socketserver.ThreadingTCPServer(('127.0.0.1', 8090), MyServer)

是不是超級簡單!!!!!!!!!

這是服務端對吧,客戶端很好寫,就正常寫

到此!socket通信才算是真正的學習完了!


*****
*****


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM