recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment GCDAsyncSocket envoie-t-il séquentiellement ? ? ?

Comment GCDAsyncSocket envoie-t-il des messages de manière séquentielle ? ? ? Par exemple, envoyez d'abord le nom du fichier, puis la longueur, puis le fichier. Vous devez également envoyer le

suivant après l'envoi du nom du fichier.
PHPzPHPz2828 Il y a quelques jours855

répondre à tous(1)je répondrai

  • 巴扎黑

    巴扎黑2017-05-02 09:34:41

    Pour faire simple, les connexions TCP sont en panne lors de la transmission réseau (principalement pour optimiser la transmission des données), mais TCP a un traitement de « tri » correspondant, donc pour la même connexion (comme le client A et le serveur S Cette connexion entre ), la couche inférieure de TCP Socket a implémenté la séquence. Si vous envoyez dans l'ordre a, b, c, le destinataire recevra a, b, c dans l'ordre. C'est également un avantage de TCP par rapport à UDP.

    Votre problème ne devrait donc pas être un problème GCDAsyncSocket.

    Socket envoie et reçoit uniquement des données, sans logique métier spécifique, de sorte que les applications socket ont généralement leurs propres formats de données, comme l'association de divers paramètres avec des délimiteurs (par exemple : nom de fichier | fichier), ou l'utilisation du format commun xml. Ou json, etc. pour une analyse facile ( {"filename": "", "data": ""} ). Dans le même temps, en raison des limitations de MTU, une donnée commerciale complète peut être décompressée et envoyée lors de l'envoi, et une perte de paquets peut survenir pour des raisons de réseau, de sorte que le paramètre « longueur des données du socket » sera ajouté au format de données personnalisé. , similaire à La longueur de contenu de HTTP POST est généralement ajoutée au début d'un élément de données pour marquer la longueur de l'ensemble des données de socket suivantes. Le paramètre « longueur » ne participe pas au format des données. Le paramètre « longueur des données du socket » est représenté par une certaine longueur de sous-section convenue par les deux parties. Lorsque le récepteur traite les données, il analyse d'abord la « longueur » des premiers bits, puis détermine les données complètes suivantes en fonction de cette longueur.

    Si vous rencontrez un problème lors du développement de Socket et que vous ne parvenez pas à en déterminer clairement la cause, il est recommandé de capturer le paquet et de l'analyser d'abord pour voir comment les données sont transmises, dépanner le défaut du réseau, puis déterminer s'il s'agit d'un expéditeur. problème ou un problème de récepteur. S'il n'y a pas de problème avec l'expéditeur et le destinataire, ni avec le code de service, pensez enfin à vérifier les raisons du "proxy réseau", telles que les routeurs, les opérateurs, etc. la couche intermédiaire du réseau chinois.

    répondre
    0
  • Annulerrépondre