


Utilisez le programme réel pour tester la taille maximale des paquets de la fonction udp sendto --- 65507
L'exemple de cet article décrit la méthode de communication UDP de la communication Socket de PHP. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :
Nous savons que l'en-tête du paquet IP a une longueur de 16 bits et que la valeur binaire maximale correspondante est 2^16 -1, ce qui signifie que la valeur maximale de toute la longueur de un paquet IP est une section de 2 ^ 16 - 1 mots, si la communication UDP est considérée, alors après avoir supprimé les 20 octets de l'en-tête IP et les 8 octets de l'en-tête UDP, il reste encore 2 ^ 16 - 1 - 20 - 8 octets gauche. Jouons avec le programme (cet article utilise uniquement le client pour envoyer des données à titre d'exemple).
Programme :
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <errno.h> int main(int argc, char *argv[]) { struct sockaddr_in srvAddr; bzero(&srvAddr, sizeof(srvAddr)); srvAddr.sin_family = AF_INET; srvAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); srvAddr.sin_port = htons(8888); int iSock = socket(AF_INET, SOCK_DGRAM, 0); // udp char szBuf[1024 * 64 -1 - 20 - 8] = {0}; int iRet = sendto(iSock, szBuf, sizeof(szBuf), 0, (struct sockaddr *)&srvAddr, sizeof(srvAddr)); printf("send size is %d, iRet is %d, errmsg[%s]\n", sizeof(szBuf), iRet, strerror(errno)); close(iSock); return 0; }
Résultat :
la taille d'envoi est 65507, iRet est 65507, errmsg[Succès]
OK, agrandissons la taille d'envoi de 1 octet. Essayez :
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <errno.h> int main(int argc, char *argv[]) { struct sockaddr_in srvAddr; bzero(&srvAddr, sizeof(srvAddr)); srvAddr.sin_family = AF_INET; srvAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); srvAddr.sin_port = htons(8888); int iSock = socket(AF_INET, SOCK_DGRAM, 0); // udp char szBuf[1024 * 64 - 20 - 8] = {0}; int iRet = sendto(iSock, szBuf, sizeof(szBuf), 0, (struct sockaddr *)&srvAddr, sizeof(srvAddr)); printf("send size is %d, iRet is %d, errmsg[%s]\n", sizeof(szBuf), iRet, strerror(errno)); close(iSock); return 0; }
Résultat :
envoyer. la taille est 65508, iRet est -1, errmsg[Message trop long]
Recommandations associées :
exemple de communication de socket php (tcp/udp) compétences d'analyse_php
Exemple de communication PHP Socket Communication UDP_compétences PHP
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)