97**国产露脸精品国产,国内精品免费一区二区三区,国产精品久久久久久久久妇女,国内一区二区三区精品视频

您現在所在的位置:首頁 >學習資源 > Python全棧+人工智能入門教材 > Python基礎入門教程30.4:企業級開發進階 服務端快捷開發

Python基礎入門教程30.4:企業級開發進階 服務端快捷開發

來源:奇酷教育 發表于:

前面的內容中已經介紹了TCP編程和UDP編程實現網絡數據的通信和共享我們可以看到客戶端程序的編寫相對容易,主需要連接服務端然后跟服務端進

前面的內容中已經介紹了TCP編程和UDP編程實現網絡數據的通信和共享

我們可以看到客戶端程序的編寫相對容易,主需要連接服務端然后跟服務端進行數據交互就OK了。但是服務端的程序編寫較為復雜,如果考慮到數據的并發處理等各種問題,就更加復雜難以操作了。

python提供了一個socketserver模塊,可以用于更加快捷的構建我們需要的服務端環境

本節內容

  1. socketserver模塊簡介
  2. 常規模式服務端編程
  3. 并發模式服務端編程

1. socketserver模塊簡介

  • socketserver是什么?
    socketserver模塊時python提供的內置的用于快捷開發服務端程序的一個服務器框架,通過封裝大量實現的方式減少開發人員工作量的同時能快捷開發出具有較高質量的服務端程序。

  • socketserver中提供了什么?
    socketserver模塊主要包含的服務器類:TCPserver、UCPserver、ThreadingTCPserver、ThreadingUDPserver、ForkingTCPserver、ForkingUDPserver
    注意:上述TCP表示TCP服務端編程需要的服務類,UDP表示UDP編程需要的服務類,包含Threading的表示多線程并發需要的服務類;包含Forking的表示多進程并發需要的服務類
    關于多線程和多進程,后面的章節中會詳細介紹

  • socketserver核心操作?
    socketserver框架中,服務端的處理類主要有StreamRequestHandler(基于TCP協議的)、DatagramRequestHandler(基于UDP協議的),處理類中非常重要的一個方法headler()用來執行服務端程序中的核心操作

    class mytcpserver(socketserver.StreamRequestHandler):
      def handle(self):
          # 服務器中的核心操作代碼
  • socketserver中的結構?
    socketserver中主要包含兩部分:服務器和處理類
    服務類就是socketserver提供了內置服務類,如TCPserver、UDPserver等等
    處理類就是我們自定義的處理類,處理類中會包含handle()方法用于業務處理

2. 服務端編程

2.1. TCP服務端編程

使用socketserver編寫服務端程序如下:

import socketserver


# 自定義處理類
class myTcp(socketserver.StreamRequestHandler):
    # 定義處理方法
    def handle(self):
        # 通過client_address屬性查看連接進來的服務器
        print("連接上的服務器:%s" % str(self.client_address))
        while True:
            # 接收客戶端發送的數據
            msg = self.request.recv(1024)
            if not msg:
                break;
            print("客戶端發過來消息:%s" % msg.decode("UTF-8"))
            # 給客戶端返回接收信息
            self.request.sendall("已經成功接收您發送的消息".encode("UTF-8"))


# 程序從主線程直接運行
if __name__ == "__main__":
    # 創建服務端對象,指定處理類,并監聽8888端口
    server = socketserver.TCPServer(('', 8888), myTcp)
    # 啟動服務端程序
    server.serve_forever()

此時,我們使用常規模式開發客戶端程序如下:

import socket

sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sc.connect(("192.168.10.108", 8888))

while True:
    msg = input("請輸入要發送的內容:")
    if not msg or msg == "exit":
        break
    sc.sendall(msg.encode("UTF-8"))
    msg = sc.recv(1024)
    print("服務器回應:" + msg.decode("UTF-8"))

sc.close()

運行上述程序,就可以和之前一樣,實現客戶端和服務端之間的數據通信了;
和以前不一樣的時,此時我們如果關閉了客戶端,服務端程序還是在運行的,如果重新啟動客戶端,客戶端又會接入服務端,重新建立連接并通信。

2.2. UDP服務端編程

使用socketserver的UDPServer服務類和DatagramRequestHandler處理類進行服務端的編程處理如下:

import socketserver

# 創建自定義處理類
class myUdp(socketserver.DatagramRequestHandler):
    # 創建自定義處理方法
    def handle(self):
        # 打印連接進來的客戶端信息
        print("連接到服務器的主機:" + str(self.client_address))

        # 收發消息
        while True:
            # 接收客戶端發送的消息
            # msg = self.request.recv()
            msg = self.rfile.readline()
            if not msg:
                break
            print("接受到客戶端發送的消息:%s" % msg.decode("UTF-8"))
            # 發送消息
            self.wfile.write("接收到您發送的消息".encode("UTF-8"))
# 主模塊線程中運行程序
if __name__ == "__main__":
    # 創建UDP服務器對象
    server = socketserver.UDPServer(("", 8989), myUdp)
    # 啟動UDP服務器
    server.serve_forever()

使用常規的方式開發UDP客戶端代碼如下:

import socket

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

while True:
    data = input("請輸入要發送的消息:")
    if not data or data == "exit":
        break

    sc.sendto(data.encode("UTF-8"), ("192.168.10.108", 8989))

    data,recv = sc.recvfrom(1024)
    if not data:
        break
    print("服務器返回消息:" + data.decode("UTF-8"))

sc.close()

此時啟動服務端程序,啟動客戶端程序,就可以實現服務端和客戶端時間的數據通信了。
另外:你可以試試啟動多個客戶端程序看看,有彩蛋哦。

3. 服務端并發

關于使用多線程或者多進程并發的方式也是比較簡單的,參考代碼如下,如果有興趣的話,等學習完并發編程之后,可以再回過頭看看ThreadingTCPServer和ForkingTCPServer這樣多線程和多進程并發的操作哦
服務端參考代碼:

import socketserver

class myTcp(socketserver.StreamRequestHandler):
    def handle(self):
        while True:
            data = self.request.recv(1024)
            print("接收到數據:" + data.decode("UTF-8"))
            self.request.sendall("數據已經接收成功".encode("UTF-8"))

if __name__ == "__main__":
    server = socketserver.ThreadingTCPServer(("", 9000), myTcp)
    server.serve_forever()

客戶端還是常規的客戶端

import socket

sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sc.connect(("192.168.10.108", 9000))

while True:
    msg = input("請輸入要發送的內容:")
    if not msg or msg == "exit":
        break
    sc.sendall(msg.encode("UTF-8"))
    msg = sc.recv(1024)
    print("服務器回應:" + msg.decode("UTF-8"))

sc.close()

>>>更多VR/AR入門教程:VR入門
 
97**国产露脸精品国产,国内精品免费一区二区三区,国产精品久久久久久久久妇女,国内一区二区三区精品视频
午夜爽爽爽男女免费观看| 亚洲天堂视频一区| 中文在线永久免费观看| 五月天av网站| 国产一二三四五区| av无码av天天av天天爽| 欧美福利在线视频| 欧美福利第一页| 中文字幕xxx| 精品少妇一区二区三区免费观| 国产一线在线观看| 制服丝袜第一页在线观看| youjizz.com日本| 精品人妻一区二区三区香蕉| 免费黄色在线视频| 亚洲AV无码成人精品区明星换面| 亚洲精品91在线| 天天色天天综合| 人妻激情偷乱视频一区二区三区| 亚洲三级在线视频| 亚洲婷婷在线观看| 国产免费一区二区三区网站免费| 国产喷水在线观看| 亚洲精品一二三四| 日韩中文字幕电影| 日韩激情综合网| 亚洲精品国产成人av在线| av女人的天堂| 性农村xxxxx小树林| 免费看黄色av| caoporn91| 亚洲a v网站| 国产视频精品视频| 少妇的滋味中文字幕bd| 亚洲乱妇老熟女爽到高潮的片| 黄色a一级视频| 日韩av成人网| 国产小视频你懂的| 亚州av综合色区无码一区| 黄色av片三级三级三级免费看| 折磨小男生性器羞耻的故事| 久久精品色妇熟妇丰满人妻| 老司机福利av| 日韩 中文字幕| 少妇献身老头系列| frxxee中国xxx麻豆hd| av男人的天堂av| 女~淫辱の触手3d动漫| 日本女人性视频| 美女被爆操网站| 中文字幕av一区二区三区人妻少妇| 夜夜春很很躁夜夜躁| av直播在线观看| 强迫凌虐淫辱の牝奴在线观看| 黑鬼狂亚洲人videos| 永久免费av无码网站性色av| 国产激情视频网站| 极品白嫩的小少妇| av av在线| 性农村xxxxx小树林| 国产精品熟妇一区二区三区四区| av在线免费观看不卡| 久久久久久久久久久影视| 亚洲妇女无套内射精| 成人在线观看一区二区| 香蕉视频污视频| 少妇被狂c下部羞羞漫画| 无码国产精品一区二区免费式直播| 中文字幕在线观看视频www| 99国产精品免费视频| 国产a级片视频| 久久国产精品影院| 日本人亚洲人jjzzjjz| 阿v天堂2014| 女人18毛片毛片毛片毛片区二 | 国产白袜脚足j棉袜在线观看| 私库av在线播放| 亚洲av人人澡人人爽人人夜夜| 人妻 日韩 欧美 综合 制服| 精品国产av色一区二区深夜久久| 国产人妻人伦精品1国产丝袜| 一级黄色片大全| 成人信息集中地| 在线天堂www在线国语对白| 亚洲黄色免费视频| 日韩成人毛片视频| 一级特级黄色片| 天天操夜夜操av| 亚洲第九十七页| 久久午夜精品视频| 少妇伦子伦精品无吗| 日本一级片在线播放| 国产精品成人无码免费| www深夜成人a√在线| 午夜理伦三级做爰电影| 午夜69成人做爰视频| 国精品无码人妻一区二区三区| 美国美女黄色片| 国产香蕉精品视频| 日本午夜在线观看| xxxx日本免费| 日本黄色录像片| 三级黄色在线观看| 亚洲精品成人无码熟妇在线| 熟女人妻一区二区三区免费看| 色欲AV无码精品一区二区久久| 日本黄色www| 黄色片在线观看网站| 日本一区二区视频在线播放| 香港三级日本三级| 成人一级黄色大片| 成年人在线免费看片| 私密视频在线观看| 91精品国自产在线偷拍蜜桃| 香蕉视频久久久| 成年人免费观看视频网站| avtt香蕉久久| 国产精品偷伦视频免费观看了| 黄色录像二级片| 91香蕉一区二区三区在线观看| 日本成人免费在线观看| www.99热| 中文字幕资源站| 日韩精品123区| 日本精品在线免费观看| 亚洲一级理论片| 免费黄色国产视频| 手机av在线看| 在线播放av网址| 玖玖爱在线精品视频| 老熟妇精品一区二区三区| 日本高清www| 国产aaaaaaaaa| 我要看一级黄色录像| 又大又长粗又爽又黄少妇视频| 亚洲女则毛耸耸bbw| 最新中文字幕视频| 午夜三级在线观看| 中国黄色片视频| 精品一区二区三区蜜桃在线| 色哟哟一一国产精品| www.四虎精品| 成年人网站免费在线观看| 人妻互换一区二区激情偷拍| 天天爽夜夜爽视频| 91视频在线免费| 国产在线观看免费视频软件| 久久发布国产伦子伦精品| 97伦伦午夜电影理伦片| 欧美丰满熟妇bbbbbb| 欧美bbbbb性bbbbb视频| 开心激情五月网| 在线观看福利片| 久久无码专区国产精品s| 国产视频三区四区| 国产69视频在线观看| 黑人狂躁日本娇小| 性久久久久久久久久| 下面一进一出好爽视频| 懂色av蜜桃av| 国产成人无码一区二区在线观看| 小早川怜子一区二区的演员表| 国产美女视频免费观看下载软件| 极品色av影院| 日韩黄色中文字幕| a天堂中文字幕| 亚洲av片不卡无码久久| 影音先锋黄色资源| 日本免费www| 野外性满足hd| 午夜av入18在线| 久久久精品少妇| 亚洲一级黄色录像| 免费看黄色的视频| 扒开伸进免费视频| 一级黄色免费视频| 香蕉在线观看视频| 粉嫩av性色av蜜臀av网站| 中文字幕第二区| 成人性生交大免费看| 国产亚洲无码精品| 久久国产精品无码一级毛片| 亚洲av无码一区二区三区观看| 深夜视频在线观看| 蜜臀av粉嫩av懂色av| 欧美双性人妖o0| 国产精品久久久久久亚洲av| 特级特黄刘亦菲aaa级| 无码国产精品一区二区免费式直播| 26uuu国产| 人妻av一区二区| japanese中文字幕| 亚洲毛片亚洲毛片亚洲毛片| 五月婷六月丁香| 影音先锋男人资源在线观看| 国产精品免费人成网站酒店| 91精品国产高清91久久久久久| 精品视频站长推荐| 538精品视频| 免费高清视频在线观看|