ホームページ  >  記事  >  バックエンド開発  >  ソケット関連の問題を調べるのに熱心な人々が協力してくれることを期待しています。

ソケット関連の問題を調べるのに熱心な人々が協力してくれることを期待しています。

WBOY
WBOYオリジナル
2016-06-13 12:48:301012ブラウズ

熱心な人々がソケットの問題を調べるのを手伝ってくれることを期待しています
私はそのような関数を実装したいと思っています:
LAN 全体にブロードキャストを送信します。
次に、返品情報をすべて取得します。

<br />
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);<br />
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);<br />
$message="1000";<br />
@socket_sendto($socket,$message,strlen($message),0,"255.255.255.255",6000);<br />
<br />
$ip="";<br />
$port=6000;<br />
@socket_recvfrom($socket,$message,0,0,$ip,$port);<br />


ブロードキャストは成功しているようですが、受信コードに問題があるようです。上記のコードは停止しません
。 その理由は、一部の IP が結果を返さず、このコードが永遠に待機しているように見えるためです
waitに変更しましたが、返された結果をすべて取得できませんでした...

興味のある方はぜひ参考にしていただければと思います。


-----解決策--------------------------------
socket_send が値を返すために結果をチェックする必要があるかどうか
パラメータ addr が間違っているようですね。 udp メソッドはネットワーク セグメントの最後のアドレスである必要があります
たとえば
192.168.5.0/24
ネットワークセグメントは192.168.5.0、マスクは255.255.255.0、ブロードキャストアドレスは192.168.5.255
となります。
socket_recvfrom がリッスンしています。$ip が空のようです
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。