Maison >Problème commun >Combien de méthodes existe-t-il pour la sous-traitance de connexions TCP longues ?
Il existe 4 méthodes pour la mise en paquet des connexions TCP longues, qui sont : 1. La méthode de longueur de message fixe 2. La méthode d'utilisation de chaînes spéciales comme limites de message 3. L'ajout d'un en-tête à chaque message de longueur ; méthode de terrain ; 4. Une méthode de sous-traitance utilisant le format du message lui-même.
Quatre méthodes de sous-traitance de connexion TCP longue :
1. Longueur de message fixe
Utiliser des chaînes spéciales comme message. frontières. Par exemple, les en-têtes du protocole http utilisent “rn”
comme séparateur de champ
3. Ajoutez un champ de longueur à l'en-tête de chaque message. C'est le plus courant
4. Utiliser le format du message lui-même pour sous-traiter. Par exemple, l'appariement de 4216313e5055da45c6d0ded129c5d644c02ae4fdd442eb2210bebb17feeb95b4
en XML, etc.
Recommandations d'apprentissage associées : PHP Programmation du débutant au compétent
Parlez-moi de la méthode d'ajout d'un champ de longueur de message à l'en-tête pour la mise en paquets
Si chaque message a un en-tête de 4 octets, stockez la longueur de la chaîne . Par exemple, le message "bonjour", le flux d'octets est 0x00
, 0x00
, 0x00
, 0x05
, 'h’,'e','l','l','o'
Écrivez un morceau de pseudo-code pour afficher la sous-traitance :
void OnMessage() { while(接收缓冲buf可读字节>=头部长度4) { len = 包的长度 if(len>65536 or len<0) { 关闭连接 } else if(buf>=len+4) { 从buf中提取出4字节; message=将buf后的len长度内存赋给message messagecallback(message)调用用户代码处理message 从buf中移除len长度 } else { 不够一个包的长度,等待下次消息到来,break; } } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!