End='something useable as an end marker'
def send_to_end(sock,data):
#assume the data is appendable, may need to stringify the data
sock.sendall(data+End)
def recvall2(the_socket):
#instead of doing
#data=the_socket.recv(8192)
#return data
total_data=[];data=''
while True:
#if recv returns 0 bytes, other side has closed
data=the_socket.recv(8192)
if End in data:
total_data.append(data[:data.find(End)])
break
total_data.append(data)
if len(total_data)>1:
#check if end_of_data was split
last_pair=total_data[-2]+total_data[-1]
if End in last_pair:
total_data[-2]=last_pair[:last_pair.find(End)]
total_data.pop()
break
result=''.join(total_data)
return result