ホームページ  >  記事  >  バックエンド開発  >  熱心な人々がソケットの問題の解決を手伝ってくれることを期待しています。

熱心な人々がソケットの問題の解決を手伝ってくれることを期待しています。

WBOY
WBOYオリジナル
2016-06-23 14:05:10781ブラウズ

このような機能を実装したいです:
LAN 全体にブロードキャストを送信し、
その後、すべての返信情報を取得します。

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


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

私を助けてくれる熱心な人々がいることを願っています

ディスカッション (解決策) に返信

結果を確認する必要がありますか? socket_sendtoの戻り値

パラメータaddrが間違っているようですね? UDP メソッドは、ネットワーク セグメントの最後のアドレスである必要があります。たとえば、192.168.5.0/24

したがって、ネットワーク セグメントは 192.168.5.0 マスク 255.255.255.0 ブロードキャスト アドレスは 192.168.5.255 です
$IP のように、Socket_Recvfrom がリッスンしています。あなたの $ IP は $ IP です あなたの $ IP はあなたの $ IP です 空です

モデレータはとても役に立ちます

ありがとうございます。モデレーターの返信
ネットワークセグメント全体でブロードキャストする必要があります。誰かが応答したら、この応答が得られることを願っています

$ip は空ですが、問題ないようです。どの IP が応答するかわからないため、パラメーターはこの方法で渡されます。

(私は叫んでいます、誰が私にお金を貸してくれるお金を持っていますか? 同意する人が 2 人いるかもしれません、私はここに持っています。私は彼らが約束した内容を入手したいだけです)

もしかしたら他にもいるかもしれません 書き方は?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。