国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

            手機站
            千鋒教育

            千鋒學習站 | 隨時隨地免費學

            千鋒教育

            掃一掃進入千鋒手機站

            領取全套視頻
            千鋒教育

            關注千鋒學習站小程序
            隨時隨地免費學習課程

            當前位置:首頁  >  技術干貨  > Python網(wǎng)絡編程調用接收數(shù)據(jù)的三種方法

            Python網(wǎng)絡編程調用接收數(shù)據(jù)的三種方法

            來源:千鋒教育
            發(fā)布人:xqq
            時間: 2023-11-07 01:44:43 1699292683

            最近在使用python進行網(wǎng)絡編程開發(fā)一個通用的tcpclient測試小工具。在使用socket進行網(wǎng)絡編程中,如何判定對端發(fā)送一條報文是否接收完成,是進行socket網(wǎng)絡開發(fā)必須要考慮的一個問題。這里,簡要介紹一下判別數(shù)據(jù)接收接收完成常用的三種方法:

            1.基礎數(shù)據(jù)接收法:

            使用基礎數(shù)據(jù)接收法時,當與服務socket斷開連接時,會接收到空字符串。因此,可以根據(jù)此特點,在程序中加入循環(huán),一直接收數(shù)據(jù),直到數(shù)據(jù)發(fā)送端關閉socket連接。適用場景:客戶端和服務器的鏈接為短鏈接(即一次socket通訊后連接就會關閉)。代碼如下:

            importsocket,struct,sys,time

            Port=22220

            #assumeasocketdisconnect(datareturnedisemptystring)meansalldatawas#donebeingsent.

            defrecv_basic(the_socket):

            total_data=[]

            whileTrue:

            data=the_socket.recv(20480)

            ifnotdata:break

            total_data.append(data)

            return''.join(total_data)

            2.尾標識方法

            通過尋找接收的協(xié)議數(shù)據(jù)中的尾標識字符串,獲取完整的數(shù)據(jù)的數(shù)據(jù)報文。適用場景:接收的協(xié)議數(shù)據(jù)中包含相關的尾標識。代碼如下:

            End='somethinguseableasanendmarker'

            defrecv_end(the_socket):

            total_data=[];data=''

            whileTrue:

            data=the_socket.recv(8192)

            ifEndindata:

            total_data.append(data[:data.find(End)])

            break

            total_data.append(data)

            iflen(total_data)>1:

            #checkifend_of_datawassplit

            last_pair=total_data[-2]+total_data[-1]

            ifEndinlast_pair:

            total_data[-2]=last_pair[:last_pair.find(End)]

            total_data.pop()

            break

            return''.join(total_data)

            3.負載長度方法

            即通過協(xié)議數(shù)據(jù)中的負載長度值,確定有效報文的長度,適用場景:協(xié)議數(shù)據(jù)中包含負載協(xié)議字段。這種方法也是比較常用和通用的一種方法,但是需要一邊接收數(shù)據(jù)一邊解析數(shù)據(jù)。代碼如下:

            defrecv_size(the_socket):

            #datalengthispackedinto4bytes

            total_len=0;total_data=[];size=sys.maxint

            size_data=sock_data='';recv_size=8192

            whiletotal_len

            sock_data=the_socket.recv(recv_size)

            ifnottotal_data:

            iflen(sock_data)>4:

            size_data+=sock_data

            size=struct.unpack('>i',size_data[:4])[0]

            recv_size=size

            ifrecv_size>524288:recv_size=524288

            total_data.append(size_data[4:])

            else:

            size_data+=sock_data

            else:

            total_data.append(sock_data)

            total_len=sum([len(i)foriintotal_data])

            return''.join(total_data)

            以上內(nèi)容為大家介紹了Python網(wǎng)絡編程調用接收數(shù)據(jù)的三種方法,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://parentadvocate.org/

            tags: python培訓
            聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
            10年以上業(yè)內(nèi)強師集結,手把手帶你蛻變精英
            請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
            免費領取
            今日已有369人領取成功
            劉同學 138****2860 剛剛成功領取
            王同學 131****2015 剛剛成功領取
            張同學 133****4652 剛剛成功領取
            李同學 135****8607 剛剛成功領取
            楊同學 132****5667 剛剛成功領取
            岳同學 134****6652 剛剛成功領取
            梁同學 157****2950 剛剛成功領取
            劉同學 189****1015 剛剛成功領取
            張同學 155****4678 剛剛成功領取
            鄒同學 139****2907 剛剛成功領取
            董同學 138****2867 剛剛成功領取
            周同學 136****3602 剛剛成功領取
            相關推薦HOT