熱心な人々がソケットの問題を調べるのを手伝ってくれることを期待しています
私はそのような関数を実装したいと思っています:
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 が空のようです