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  Â