buffer = ''
while 1:
data = recv() # 注意处理各种异常,recv有可能返回非str
if not data:
continue
buffer += data
while buffer:
pack_len = ... # 取长度 (长度值必然是占固定的位数)
if len(buffer) < pack_len:
break
pack = buffer[:pack_len] # 取包
handle(pack) # 处理一个包
buffer = buffer[pack_len:] # 从缓存中删除包
Les paquets TCP doivent être collés au même homologue. Le homologue n'est pas traité ici. Vous devez effectuer le même traitement pour chaque homologue N'ajoutez pas les données des différents homologues ~
Si vous utilisez un protocole personnalisé, ajoutez un champ de longueur au message. En fonction de cette longueur, vous pouvez connaître la longueur de ce message et s'il y a la prochaine donnée.
Les données ont-elles leur propre protocole défini ?
Veuillez vous référer vous-même à l'écriture de socket
Fournissez quelques idées :
Les paquets TCP doivent être collés au même homologue. Le homologue n'est pas traité ici. Vous devez effectuer le même traitement pour chaque homologue
.N'ajoutez pas les données des différents homologues ~
Si vous utilisez un protocole personnalisé, ajoutez un champ de longueur au message. En fonction de cette longueur, vous pouvez connaître la longueur de ce message et s'il y a la prochaine donnée.
Vous pouvez vous référer au
de TwistedInt32StringReceiver