第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

泛洪速度過快時服務(wù)器無法解析數(shù)據(jù)包

泛洪速度過快時服務(wù)器無法解析數(shù)據(jù)包

Go
手掌心 2021-09-09 13:55:08
這是我每秒用太多數(shù)據(jù)包淹沒服務(wù)器時得到的錯誤:2014/11/28 12:52:49 main.go:59: loading plugin: print2014/11/28 12:52:49 main.go:86: starting server on 0.0.0.0:80802014/11/28 12:52:59 server.go:15: client has connected: 127.0.0.1:591462014/11/28 12:52:59 server.go:43: received data from client 127.0.0.1:59146: &main.Observation{SensorId:"1", Timestamp:1416492023}2014/11/28 12:52:59 server.go:29: read error from 127.0.0.1:59146: zlib: invalid header2014/11/28 12:52:59 server.go:18: closing connection to: 127.0.0.1:59146它設(shè)法解碼一個數(shù)據(jù)包(有時,可能是 2 或 3 個)然后出錯。這是進行泛洪的代碼:import socketimport structimport jsonimport zlibimport timedef serialize(data):    data = json.dumps(data)    data = zlib.compress(data)    packet  = struct.pack('!I', len(data))    packet += data    return len(data), packetmessage = {    'sensor_id': '1',    'timestamp': 1416492023,}length, buffer = serialize([message])client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect(('127.0.0.1', 8080))while True:    client.send(buffer)    #time.sleep(0.0005)當(dāng)我取消對time.sleep()調(diào)用的注釋時,服務(wù)器工作正常。似乎每秒太多的數(shù)據(jù)包正在殺死服務(wù)器。為什么?這是相關(guān)的 Go 代碼。連接處理程序:func (self *Server) handleConnection(connection net.Conn) {    for {        connection.SetReadDeadline(time.Now().Add(30 * time.Second))        observations, err := self.Protocol.Unserialize(connection)        if err != nil {            log.Printf("read error from %s: %s\n", connection.RemoteAddr(), err)            return        }}這是反序列化程序:// Length Value protocol to read zlib compressed, JSON encoded packets.type ProtocolV2 struct{}func (self *ProtocolV2) Unserialize(packet io.Reader) ([]*Observation, error) {    var length uint32    if err := binary.Read(packet, binary.BigEndian, &length); err != nil {        return nil, err    }    buffer := make([]byte, length)    rawreader := bufio.NewReader(packet)    if _, err := rawreader.Read(buffer); err != nil {        return nil, err    }
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 237 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號