問題タブ [php-socket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3037 参照

php - PHP ソケットが正しく機能しない

127.0.0.1 のポート 1122 を介して着信要求をリッスンするサーバーを確立しました。コードは次のとおりです。

これはクライアントをリッスンし、inout の逆の値を返します。

コードでエラーが発生することはありません。実際、localhost/socket.php にアクセスすると、読み込みが継続されます。

terraterm を使用して telnet 接続を開くと、白いページが表示されます。値を入力したりキーを打ったりすると、接続が失われます。

なぜこれが起こっているのですか?

敬具

0 投票する
2 に答える
2362 参照

php - 先頭の長さの値を持つソケットデータを送信する

PHPソケットを使用してネットワーク接続を介してPHPスクリプトからC#アプリにJSONメッセージを送信したいと思います。

通常、バイナリプロトコルの場合、すべてのメッセージの最初の4バイトは、メッセージの長さ(バイト数)を表す整数である必要があります。

C#では、すべてのメッセージの前に、メッセージの長さを示す整数を次のように付けます。

私が理解しているように、PHPでは関数socket_sendは文字列のみを受け入れます。では、PHP 5.xで同じプレフィックスを作成するにはどうすればよいですか?

更新:ネットワークソケットから受信したときにそのようなプレフィックス付きデータを処理する方法についてのフォローアップ質問を投稿しました。

0 投票する
1 に答える
592 参照

php - 先頭の長さの値を使用してソケット データを処理する

これは、ネットワーク ソケットから受信したプレフィックス付きメッセージの処理方法に関する追加の質問です。私がやろうとしていることは次のとおりです。

  1. 最初の 4 バイトを読み取ります (これは $prefix であり、メッセージの長さを表します)
  2. $prefix のサイズが実際に 4 バイトで、整数かどうかを確認します
  3. $prefix からの長さを使用して完全な $message を読み取ります
  4. メッセージのサイズが実際に $prefix バイトであるかどうかを確認します

これまでのところ、次の 2 行のコードがあります。

上記のチェックを行うにはどうすればよいですか?

補足: ネットワーク ソケット接続を介して送信されるすべてのデータは UTF8、リトル エンディアンです。

0 投票する
2 に答える
7754 参照

php - ノンブロッキング ソケットに接続できません

これは私を夢中にさせます。どちらもノンブロッキング ソケットを使用して、クライアントがサーバーに接続する php 5.3 で非常に単純なノンブロッキング ソケット スクリプトを作成する必要があります。

phpsocketdaemonphp manualの例を試しましたが、どちらの場合もサーバーに接続しようとすると次のエラーが発生します。

エラーが発生したクライアントスクリプト:

Win 7 で Zend Server 5.6.0 SP1 の無料版を使用しています。

この問題を解決する方法を知っている人、またはノンブロッキング ソケット クライアント/サーバー スクリプトの簡単でわかりやすい例を知っている人はいますか?

0 投票する
1 に答える
999 参照

php - パラメータとしてのパラメータ$tv_​​secまたは$tv_usecは何をしますか?

サーバースクリプトが呼び出す単純なソケットphp5.3スクリプトを作成しました...

...ループ内。非ブロッキングソケットを使用していて、スクリプトはWin7マシンで実行されています。

問題:この関数はスクリプトを2秒間ブロックします。これは、4番目のパラメーター($ tv_sec)がこのブロックを引き起こすことを意味します。

私の質問:$tv_secまたはの違いは何$tv_usecですか?何をし$tv_usecますか?

PHPマニュアルの関数の説明:

tv_sec: tv_secとtv_usecが一緒になってタイムアウトパラメータを形成します。タイムアウトは、socket_select()が戻るまでに経過した時間の上限です。tv_secがゼロの場合、socket_select()がすぐに返されます。これはポーリングに役立ちます。tv_secがNULL(タイムアウトなし)の場合、socket_select()は無期限にブロックできます。

tv_usec:説明なし

0 投票する
2 に答える
1112 参照

php - 1バイトを符号なしバイトとして読み取る

phpスクリプトで遊ぼうとしているJavaサーバーがいくつかあります。

この形式は、メッセージが符号なしバイトとして受け取るバイト数と、文字列を構成するバイトを提供します。

これが私の機能と解説です

私は実際にはPHPの人ではなく、Javaの人であるため、この長さを取得する方法がわかりません。

@ c0le2のリクエストで、次の編集を行いました

次のエラーが発生しました

0 投票する
1 に答える
756 参照

php - Firefox12でWebソケットが機能しない

Firefoxは、ws://192.168.0.155:5555 / socket/server3.phpのサーバーへの接続を確立できません。

私のコードに間違ったwts??

0 投票する
2 に答える
20225 参照

php - Ubuntu12.04システムでPHP5.3.10でソケットを有効にする方法

LinuxのPHPでSocketを有効にしようとしています。php.iniを確認しましたが、そのファイルでは次の行が表示されません。

0 投票する
2 に答える
77 参照

php - ソケット操作が行われているときにデータを書き込むにはどうすればよいですか

私はソケットに不慣れで、ソケットがサーバーからデータをフェッチしている間に、ユーザーに待機するように指示するデータを表示しようとしていますが、ob_flush、flush、およびその他の関数も使用しましたが、機能しませんでした。テキスト「読み込み中....お待ちください」は、ソケットが閉じられた後にのみ表示されます。これが私のコードです

解決策があれば、助けてください。前もって感謝します

0 投票する
1 に答える
342 参照

php - PHPのソケット接続を介してPOST経由でオブジェクトの配列を送信できません

私はphpがまったく初めてです。ページAにいる間にA.phpとB.phpがページBを実行できるようにする2つのページがありました。そのために、ソケット接続を作成し、ページBを実行できましたが、問題は、オブジェクトの配列を送信するときですページ B.page A には、配列にリストされている最初のオブジェクトのみが送信され、配列の他の値は何もありませんでした。ここには、A.php のコードがあります。

IN B.php

配列の最初の要素としてリストされているため、「メッセージ」のみを取得します