PHPのソケット問題について!

WBOY
リリース: 2016-06-23 14:15:17
オリジナル
884 人が閲覧しました

ソケット PHP UDP ソケット書き込み()

最近のプロジェクトでは php ソケット通信を使用する必要があり、これを TCP でクライアントからサーバーに正常に送信でき、サーバーもクライアントに情報を返すことができます。 。
ただし、UDP では、プログラムはクライアントで情報を受信できますが、socket_write() を使用して返すと、戻りアドレスが見つからないことが表示されます。 。 。そうなると、クライアントはサーバーから返された情報を受信できなくなります。
この問題を解決するために助けを求めたいです。

PHP 警告:socket_write(): ソケット [0] に書き込めません: ソケットが接続されていないため、
(sendto 呼び出しを使用してデータグラム ソケットを送信する場合) データの送受信リクエストにアドレスが指定されていません
受け付けられません。

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

......これまでにやったことがありませんか?

理解できません。上記のエラー メッセージは、接続がないか、アドレスが間違っていることを意味します。

これは役に立ちません。サーバー側

set_time_limit( 0 );
echo "SOCKT...n を作成"
if ( $socket === false ) {
e cho "socket_create() が失敗しました:reason:" .socket_strerror(socket_last_error($socket) ) . "n"; }
echo "SOCKT...n"; , '192.168.1.59' , 8686);
if ( $ok === false ) {
echo "socket_bind() failed:reason:" .ソケット_strerror(ソケット_last_error( $socket ) );
else
{
echo "SOCKT バインディングが成功しました。 ..n";
$count = 0;
$msg = "サーバーからクライアントへ! ! n"; strlen ($msg),0,'192.168.1.59',1207);
echo "テストは成功しました"
// $port=0; 1024 ,$form,$port);
echo "テストは成功しました";
$talkback = "メッセージを受信しました: $buf1;
echo $talkback; true);
Socket_Close ($ Socket); HO " SOCKT を作成します...n";
$socket = ソケット作成に失敗しました ("ソケットの作成に失敗しました"); 192.168.1.59', 1207);
if(! Socket_connect Endto ($ Socket, $ Str, $arrayLen, 0, '192.168.1.59',8686);
echo "情報がサーバーに正常に送信されました。 n";
echo "送信されたコンテンツは次のとおりです:$str
";
$form ="";
$port1=0;
ソケット_recvfrom($ソケット,$buf,1024,0,$form,$port1);
echo $form;
echo "情報が正常に返されました。 ".$buf;

echo "
";
echo "Close SOCKET...n";
ソケット_close($socket);
echo "Close OKn";
?>


ヘルプ見てみましょう

// ここのコメントも削除する必要があります。まだ実行していません。サーバーは受信できますが、クライアントは受信できません。サーバーから返された情報が返されない可能性があります

サーバー側で listen および accept がないのはなぜですか?

接続がありません...非常に混乱しています

それは TCP ではなく UDP であるためです。 。 。

connectはクライアント側で追加されます。 。 。
そして、socket_recvfromとsocket_sendtoに続いてアドレスを使用します。したがって、ここで connect を追加する必要はありません。クライアント上の connect は、socket_write とsocket_read をテストするときに使用したものです

ええと、UDP です。 。 。
もう一度見てみます

クライアントはどこに接続されていても受信できるはずです。ポートを分ける理由はありません
クライアントがバインドする必要はありませんね。

まあ、束縛する必要はありません。 。いろいろなテストをするしかありません。クライアント BIND は以前にバインドされていなかったため、ここでは効果がありません。

BIND を削除しても同じ結果が表示されました

udp の使用をやめてください。 tcp は標準で推奨される方法です。 UDP は多くのソフトウェアでサポートされていません。

curl は udp をサポートする可能性があります

これは非常に単純な UDP の例です

http://www.zrwm.com/?p=1281

UDP も使いたくないのですが、TCP テストは成功しました。プロジェクトには UDP を使用する必要があります。

送信したリンクからコードを取得してくれた snmr_com に感謝します。修正したところ、うまくいきました。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート