Heim php教程 PHP开发 Verwenden Sie das aktuelle Programm, um die maximale Paketgröße der UDP-Sendto-Funktion zu testen: 65507

Verwenden Sie das aktuelle Programm, um die maximale Paketgröße der UDP-Sendto-Funktion zu testen: 65507

Sep 14, 2018 am 10:12 AM

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)