Python socket 讀取訊息問題

2021-06-28 13:50:37 字數 618 閱讀 7170

今天遇到python socket 讀取訊息不能讀取完全的問題

size = struct.unpack("!i", socket_obj.recv(4))

data_size = int(size[0])

data = socket_obj.recv(data_size)

如此寫法並不能完全讀取訊息內容。原因是scoket recv 是流式讀取,不能保證一次讀取完成。

需要改寫成以下寫法。   記錄一下

size = struct.unpack("!i", socket_obj.recv(4))

data_size = int(size[0])

#print 'data size = %d' % (data_size)

data = ''

recv_size = 0 

while true:

buff = socket_obj.recv(1024)

recv_size += len(buff)

data += buff

if  recv_size >= data_size:

break

print 'data readed size = %d' % len(data)

Python Socket 程式設計

client import socket,sys if name main 處理引數 argv sys.argv if len argv 3 or len argv 2 and argv 1 print useage argv 0 sys.exit 0 host argv 1 server ip位址...

python socket程式設計

python 編寫server的步驟 1.第一步是建立socket物件。呼叫socket建構函式。如 socket socket.socket family,type family引數代表位址家族,可為af inet或af unix。af inet家族包括internet位址,af unix家族用於...

python socket程式設計

客戶端 author lenovo fromsocketimport host localhost port 2157 bufsize 1024 addr host,port tcpclient socket af inet,sock stream tcpclient.connect addr wh...