Heim Backend-Entwicklung PHP-Tutorial udp的错包问题_PHP教程

udp的错包问题_PHP教程

Jul 14, 2016 am 10:07 AM
array conf udp word unter 代码 von 问题

问题

看下面一段代码
$word = 'HELLO';
$conf = array(
array('ip'=>'10.1.146.133', 'port'=>2001),
array('ip'=>'10.1.146.133', 'port'=>2002)
);
function udpGet($word, $ip, $port)
{
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_SNDTIMEO, array('sec'=>2, 'usec'=>0));
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>2, 'usec'=>0));
 
socket_sendto($sock, $word, strlen($word), 0x100, $ip, $port);
socket_recvfrom($sock, $result, 8192, 0, $host, $port);
 
socket_close($sock);
 
return $result;
}
 
for ($i=0; $i
{
$res = udpGet($word, $conf[$i]['ip'], $conf[$i]['port']);
var_dump($res);
}
就是连续用UPD向两个server收发数据(为说明问题,这里的server使用了最简单的回射逻辑),
如果一切流程正常,客户端会收到两次‘HELLO’。但是,如果服务端出了问题呢?
目前,客户端的超时时间是2秒,假设2001端口过了3秒发数据,而2002端口无法服务,
猜下结果会是什么呢?“两个NULL!”,直觉上应该是这个答案。如果你也这么认为,
那么恭喜你,答错了。
实际的答案是:
NULL
string(5) "HELLO"
分析
使用tcpdump抓包,得到如下结果
(133为服务端,163为客户端,客户端php版本5.3.1,Linux内核2.6.16)
12:01:39.014658 IP 10.1.146.163.40678 > 10.1.146.133.2001: UDP, length 5
12:01:41.015121 IP 10.1.146.163.40678 > 10.1.146.133.2002: UDP, length 5
12:01:42.016103 IP 10.1.146.133.2001 > 10.1.146.163.40678: UDP, length 5
 
按我的想法,两个请求应该使用不同的临时端口收发,但从抓包结果看,
客户端虽然进行了两次socket_create,但实际中却使用了同一临时端口(40678)
收发数据!这就使得第二个请求收到了第一个请求的回包。
 
感觉上这应该算是个系统的BUG,从实验中发现,此问题只在部分系统中存在,
比如Linux内核2.6.32+php5.2.3就没有此问题。
解决
每次指定socket端口,进行收发。如下面的红色代码所示。
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$sendPort = rand(10240, 60000);
socket_bind($sock, ’10.1.146.163′, $sendPort);
socket_set_option($sock, SOL_SOCKET, SO_SNDTIMEO, array(‘sec’=>2, ‘usec’=>0));
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array(‘sec’=>2, ‘usec’=>0));
当然,rand的端口也有可能出现对撞,但毕竟这种机率不大,可以从很大程度上解决问题。
如果有更好的解决办法,欢迎大家交流~
 
�0�2
�0�2
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477851.htmlTechArticle问题 看下面一段代码 $word = HELLO; $conf = array( array(ip=10.1.146.133, port=2001), array(ip=10.1.146.133, port=2002) ); function udpGet($word, $ip, $port) { $sock = socke...
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

Video Face Swap

Video Face Swap

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

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)

Ausführliche Erklärung zur Anzeige des Lineals in Word und zur Bedienung des Lineals! Ausführliche Erklärung zur Anzeige des Lineals in Word und zur Bedienung des Lineals! Mar 20, 2024 am 10:46 AM

Wenn wir Word verwenden, verwenden wir oft Lineale, um den Inhalt schöner zu bearbeiten. Sie sollten wissen, dass zu den Linealen in Word horizontale und vertikale Lineale gehören, mit denen Sie die Seitenränder, Absatzeinzüge, Tabulatoren usw. des Dokuments anzeigen und anpassen können. Wie zeigt man also das Lineal in Word an? Als Nächstes zeige ich Ihnen, wie Sie die Linealanzeige einstellen. Studierende in Not sollten es schnell abholen! Die Schritte sind wie folgt: 1. Zuerst müssen wir das Word-Lineal aufrufen. Das Standard-Word-Dokument zeigt das Word-Lineal nicht an. Wir müssen nur auf die Schaltfläche [Ansicht] in Word klicken. 2. Dann finden wir die Option [Lineal] und überprüfen sie. Auf diese Weise können wir das Wortlineal anpassen! ja oder nein

So fügen Sie einem Word-Dokument eine handschriftliche Unterschrift hinzu So fügen Sie einem Word-Dokument eine handschriftliche Unterschrift hinzu Mar 20, 2024 pm 08:56 PM

Word-Dokumente sind aufgrund ihrer leistungsstarken Funktionen weit verbreitet und können nicht nur verschiedene Formate wie Bilder und Tabellen usw. in Word einfügen, sondern für die Integrität und Authentizität der Dateien erfordern viele Dateien am Ende eine manuelle Signatur des Dokuments. Es klingt wie folgt: Wie löst man komplexe Probleme? Heute werde ich Ihnen beibringen, wie man einem Word-Dokument eine handschriftliche Unterschrift hinzufügt. Scannen oder fotografieren Sie die handschriftliche Unterschrift mit einem Scanner, einer Kamera oder einem Mobiltelefon und nehmen Sie dann mit PS oder einer anderen Bildbearbeitungssoftware den erforderlichen Zuschnitt am Bild vor. 2. Wählen Sie „Einfügen – Bild – Aus Datei“ im Word-Dokument an der Stelle, an der Sie die handschriftliche Unterschrift einfügen möchten, und wählen Sie die zugeschnittene handschriftliche Unterschrift aus. 3. Doppelklicken Sie auf das Bild der handschriftlichen Unterschrift (oder klicken Sie mit der rechten Maustaste auf das Bild und wählen Sie „Bildformat festlegen“). Daraufhin wird „Bildformat festlegen“ angezeigt.

Wo ist die Schattierungseinstellung in Word? Wo ist die Schattierungseinstellung in Word? Mar 20, 2024 am 08:16 AM

Wir verwenden oft Word für Büroarbeiten, aber wissen Sie, wo sich die Schattierungseinstellungen in Word befinden? Heute werde ich Ihnen die spezifischen Operationsschritte mitteilen, schauen Sie sich das an, Freunde! 1. Öffnen Sie zunächst das Word-Dokument, wählen Sie einen Absatz mit Textabsatzinformationen aus, der mit einer Schattierung hinzugefügt werden soll, klicken Sie dann auf die Schaltfläche [Start] in der Symbolleiste, suchen Sie den Absatzbereich und klicken Sie auf die Dropdown-Schaltfläche rechts (wie im roten Kreis in der Abbildung unten dargestellt) ). 2. Nachdem Sie auf die Dropdown-Box-Schaltfläche geklickt haben, klicken Sie in den Optionen des Popup-Menüs auf die Option [Rand und Schattierung] (wie im roten Kreis in der Abbildung unten dargestellt). 3. Klicken Sie im Popup-Dialogfeld [Rand und Schattierung] auf die Option [Schattierung] (wie im roten Kreis in der Abbildung unten dargestellt). 4. Wählen Sie in der gefüllten Spalte eine Farbe aus

So zeichnen Sie eine Tabelle in Word So zeichnen Sie eine Tabelle in Word Mar 19, 2024 pm 11:50 PM

Word ist eine sehr leistungsfähige Office-Software. Word bietet im Vergleich zu WPS mehr Vorteile bei der Detailverarbeitung. Insbesondere wenn die Dokumentbeschreibung zu komplex ist, ist die Verwendung von Word in der Regel problemloser. Wenn Sie der Gesellschaft beitreten, müssen Sie daher einige Tipps zur Verwendung von Wörtern lernen. Vor einiger Zeit hat mir mein Cousin eine solche Frage gestellt. Ich sehe oft, wie andere Leute Tabellen zeichnen, wenn sie Word verwenden, und ich fühle mich auf einem sehr hohen Niveau. Ich habe damals gelacht, es schien ein hochrangiger Inhalt zu sein, aber tatsächlich waren nur drei Schritte erforderlich, um zu funktionieren. Wissen Sie, wie man eine Tabelle in Word zeichnet? 1. Öffnen Sie Word, wählen Sie die Stelle aus, an der Sie die Tabelle einfügen möchten, und suchen Sie in der oberen Menüleiste nach der Option „Einfügen“. 2. Klicken Sie auf die Option „Tabelle“ und es erscheinen dicht gepackte kleine Würfel.

Wissen Sie, wie man eine Word-Tabelle zusammenfasst? Wissen Sie, wie man eine Word-Tabelle zusammenfasst? Mar 21, 2024 pm 01:10 PM

Manchmal stoßen wir auf Zählprobleme in Word-Tabellen. Wenn solche Probleme auftreten, kopieren die meisten Schüler die Word-Tabelle zur Berechnung in die Hand. Gibt es eine schnelle Möglichkeit, es zu berechnen? Natürlich gibt es das, tatsächlich lässt sich die Summe auch in Word berechnen. Wissen Sie also, wie es geht? Lasst uns heute gemeinsam einen Blick darauf werfen! Freunde in Not sollten es kurzerhand schnell abholen! Schrittdetails: 1. Zuerst öffnen wir die Word-Software auf dem Computer und öffnen das zu bearbeitende Dokument. (Wie im Bild gezeigt) 2. Als nächstes positionieren wir den Cursor auf der Zelle, in der sich der summierte Wert befindet (wie im Bild gezeigt), und klicken dann auf [Menüleiste

Wie man in Worten unterstreicht Wie man in Worten unterstreicht Mar 19, 2024 pm 10:49 PM

Wenn Sie eine Abschlussarbeit oder ein Lebenslaufcover erstellen, schreiben Sie Ihr Geschlecht, Ihr Alter, Ihre Klasse und andere Informationen auf das Cover, zeichnen eine Linie dahinter und schreiben Ihre eigenen Informationen. Dann geht es darum, den Namen zu unterstreichen Was jeder zum Unterstreichen in Worten fragt, werde ich Ihnen im Folgenden mitteilen. Kommen Sie und lernen Sie! Öffnen Sie zunächst das Dokument auf Ihrem Computer, klicken Sie auf die Schaltfläche [Start] in der oberen Symbolleiste von Word und dann auf die unterstrichene Symbolschaltfläche unter dem Buchstaben [U], wie im roten Kreis in der Abbildung unten dargestellt. 2. Platzieren Sie dann den Cursor an der Stelle, an der Sie unterstreichen möchten, und drücken Sie dann die Leertaste auf der Tastatur. Die Länge der Unterstreichung kann entsprechend der Anzahl der Leerzeichen gesteuert werden, wie im roten Kreis dargestellt die Abbildung unten.

So unterstreichen Sie in Word So unterstreichen Sie in Word Mar 20, 2024 pm 03:16 PM

Word ist eine sehr häufig verwendete Textverarbeitungssoftware und wird in unserem Leben, Lernen und Arbeiten ständig verwendet. Wenn Sie Word zum Bearbeiten von Texten sinnvoll nutzen möchten, müssen Sie natürlich eine gute Grundlage schaffen. Heute werde ich Ihnen zeigen, wie man in Word unterstreicht. Es ist sehr einfach. 1. Zuerst öffnen wir die Datei, die wir bearbeiten müssen. Hier nehmen wir die folgende Abbildung als Beispiel. 2. Wählen Sie mit der Maus den Text aus, den wir bearbeiten möchten. Wählen Sie im Popup-Tab das Symbol [U] aus. Der Vorgang ist wie in der Abbildung dargestellt: 3. Schauen wir uns den Effekt an: 4. Tatsächlich können wir eine bequemere und schnellere Methode verwenden, indem wir die Tastenkombination [Strg] + [U] auf der Tastatur verwenden, um Ihren Text hinzuzufügen und ihm zu folgen.

So sortieren Sie Wortseriennummern automatisch So sortieren Sie Wortseriennummern automatisch Mar 20, 2024 pm 09:20 PM

Wenn es in Word viele Inhalte gibt, ist es für uns unmöglich, jedes Kapitel einzeln zu schreiben. Der Vorgang ist einfach und bequem. Freunde, die nicht wissen, wie man die Bar bedient, kommen und lernen es! 1. Zuerst öffnen wir das zu bearbeitende Dokument auf dem Computer, wie in der Abbildung unten gezeigt: 2. Wählen Sie nach dem Öffnen des Dokuments den Text aus, der automatisch sortiert werden soll. Wählen Sie in diesem Beispiel [Kapitel 1] und [. Kapitel 2] und halten Sie die Strg-Taste gedrückt, indem Sie nach der Auswahl mit der Maus auf das [Start]-Menü von Word klicken, wie im roten Kreis in der Abbildung unten dargestellt: 3. Klicken Sie auf das kleine Dreieckssymbol rechts neben der Nummer in der [Absatz]-Symbolleiste und klicken Sie auf das Popup-Menü. Der Seriennummerntyp, der ausgewählt werden muss, ist unten dargestellt, wobei der rote Pfeil darauf zeigt.

See all articles