Maison >Problème commun >Combien de méthodes existe-t-il pour la sous-traitance de connexions TCP longues ?

Combien de méthodes existe-t-il pour la sous-traitance de connexions TCP longues ?

coldplay.xixi
coldplay.xixioriginal
2020-06-28 13:20:263342parcourir

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.

Combien de méthodes existe-t-il pour la sous-traitance de connexions TCP longues ?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn