-def connect(sock,where="ici"):
- port=client_config.port
- ip={"ici":"localhost","vent":"vent.crans.org","eva":"eva.crans.org"}[where]
+def full_read(socket):
+ """Lit un message complet sur la socket."""
+ # On récupère d'abord la taille du message
+ length_str = ''
+ char = socket.recv(1)
+ while char != '\n':
+ length_str += char
+ char = socket.recv(1)
+ total = int(length_str)
+ # On utilise une memoryview pour recevoir les données chunk par chunk efficacement
+ view = memoryview(bytearray(total))
+ next_offset = 0
+ while total - next_offset > 0:
+ recv_size = socket.recv_into(view[next_offset:], total - next_offset)
+ next_offset += recv_size
+ try:
+ msg = json.loads(view.tobytes())
+ except (TypeError, ValueError) as e:
+ raise NKNotJson("L'objet reçu n'est pas un JSON")
+ return msg
+
+def connect(sock,where,port=None):
+ if port==None:
+ port=client_config.port
+ try:
+ ip={"ici":"localhost","vent":"vent.crans.org","eva":"eva.crans.org","cerebro":"cerebro.crans.org"}[where]
+ except:
+ ip=where