


Das Beispiel in diesem Artikel beschreibt die UDP-Kommunikationsmethode der Socket-Kommunikation von PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Wir wissen, dass der IP-Paket-Header eine Länge von 16 Bit hat und der entsprechende binäre Maximalwert 2^16 -1 beträgt, was bedeutet, dass der Maximalwert der gesamten Länge von Ein IP-Paket besteht aus 2^16 - 1 Wörtern. Wenn die UDP-Kommunikation berücksichtigt wird, sind nach dem Entfernen der 20 Bytes des IP-Headers und der 8 Bytes des UDP-Headers immer noch 2^16 - 1 - 20 - 8 Bytes vorhanden links. Spielen wir mit dem Programm (in diesem Artikel wird nur der Client zum Senden von Daten als Beispiel verwendet).
Programm:
#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; }
Ergebnis:
Sendegröße ist 65507, iRet ist 65507, errmsg[Erfolg]
Okay, vergrößern wir die Sendegröße um 1 Byte. Versuchen Sie:
#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; }
Ergebnis:
Sendegröße ist 65508, iRet ist -1, errmsg[Nachricht zu lang]
Verwandte Empfehlungen:
PHP-Socket-Kommunikation (TCP/UDP) Beispielanalyse_php-Kenntnisse
PHP-Socket-Kommunikation UDP-Kommunikationsbeispiel_php-Kenntnisse
Das obige ist der detaillierte Inhalt vonVerwenden Sie das aktuelle Programm, um die maximale Paketgröße der UDP-Sendto-Funktion zu testen: 65507. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool
