Move to basic client/server structure.
This commit is contained in:
28
dsst/common/util.py
Normal file
28
dsst/common/util.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import struct
|
||||
|
||||
|
||||
def send_msg(sock, msg):
|
||||
# Prefix each message with a 4-byte length (network byte order)
|
||||
msg = struct.pack('>I', len(msg)) + msg
|
||||
sock.sendall(msg)
|
||||
|
||||
|
||||
def recv_msg(sock):
|
||||
# Read message length and unpack it into an integer
|
||||
raw_msglen = recvall(sock, 4)
|
||||
if not raw_msglen:
|
||||
return None
|
||||
msglen = struct.unpack('>I', raw_msglen)[0]
|
||||
# Read the message data
|
||||
return recvall(sock, msglen)
|
||||
|
||||
|
||||
def recvall(sock, n):
|
||||
# Helper function to recv n bytes or return None if EOF is hit
|
||||
data = b''
|
||||
while len(data) < n:
|
||||
packet = sock.recv(n - len(data))
|
||||
if not packet:
|
||||
return None
|
||||
data += packet
|
||||
return data
|
||||
Reference in New Issue
Block a user