問題タブ [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 に答える
1651 参照

php - PhpUnitを使用した正しい方法で例外が処理されない

PHP ソケットを使用して個人プロジェクト用のライブラリを作成しようとしています。そのために、phpUnit を使い始め、(多かれ少なかれ) 定性的なライブラリを学び、書きました。

testConnection メソッドで try/catch ブロックを指定しないと、php は接続がタイムアウトしたというエラーを返します (デバイスが接続されていないため、これは正常です)。ただし、php は、testConnection メソッドではなく、以下の execute メソッドで例外を処理する必要があります。そして、私はこれを理解できないようです。

これはエラーです:

そこにあってはならないメソッドと try/catch を含むテストクラス:

これ (execute メソッド) で例外を処理する必要があります。

解決

try/catch はエラー/警告をキャッチしないため、stream_socket_client によってトリガーされる警告を抑制しなければなりませんでした。次に、戻り値が false またはストリーム オブジェクトであるかどうかを確認します。false の場合、適切な例外をスローします。

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

php - PHPを使用してIMEIを受信した後にTeltonika GPSデバイスを確認する

こんにちは、サーバーから Teltonika GPS デバイスに確認を送信する方法を説明できる人はいますか? GPS デバイスは IMEI (International Mobile Equipment Identity ) 番号を送信しており、IMEI 番号を取得すると、パケットは確認応答を待っています。

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

php - 開いている COM ポートを PHP で閉じる

この PHP コードを実行して、COM ポートを開きます。しかし、私はエラーが発生しました

これが私のコードです:

私は何をすべきか?fclose($fp)関数を使用してそれを行いました。しかし、うまくいきません。

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

php - Telnet経由でlocalhostを使用したphpソケット接続

ソケットを作成してローカルホストにバインドし、127.0.0.1Microsoft の telnet サービスを使用して接続しようとしましたが、指定したアドレスとポートに接続するたびに次のエラーが発生します。

PHP 警告: socket_write(): ソケット [0] に書き込めません: ソケットが接続されておらず、(sendto 呼び出しを使用してデータグラム ソケットで終了する場合) アドレスが指定されていないため、データの送信または受信の要求は許可されませんでした.

同様のエラーが socket_read によって返されます。telnet が正常に機能し、localhost に socket_connect 要求を送信する必要があることを理解できません。

コードは次のとおりです。

ありがとう。

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

php - PHP: TCP ソケット、「アドレスをバインドできません」

この問題を抱えている他の人を見たことがありますが、私の状況を説明できるかもしれません。問題がどこにあるのかを指摘してください。

「警告: socket_bind(): アドレス [98] をバインドできません: アドレスは既に使用されています」というエラーが表示されます。

状況はこれです。Web アプリケーションを使用して、(Web ページ インターフェイスから) タスクを実行する別のプログラムをトリガーしています。そのプログラムの結果は、ソケットを介して、ソケットでリッスンしている Web アプリケーションに送信されます。

最初にソケットを作成して開き、次に他のプログラムをトリガーします。そのプログラムが終了すると、ソケットを介して結果を送信する必要があります。

最初の試行で問題なく動作します。次に、次の試行(このプロセスを何度もトリガーします)ソケットを開こうとすると、上記のソケットバインドエラーが発生します。明らかに、ソケットはまだバインドされています。

約 1 分待ってから、プロセスを正常に再実行できます。ソケット接続がタイムアウトしたと思います。

問題がソケットコードの構造にあるのか、トリガーしている外部プログラムに問題があるのか​​ わかりません。他の誰かが作成したjarファイルであるため、外部プログラムの内部についてはあまり知りません。

ソケットの作成と処理に使用するコードを次に示します。php.net の例を使用し、必要に応じて変更しました。

また、「socket_bind」、「socket_listen」などの行に問題がある場合、ソケットのクローズを処理するより効率的な方法はありますか?

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

php - PHP fsockopen クライアントが送信データを受信しない

次の(簡略化された)コードがあります。

このコードの問題は、要求が呼び出されたサーバーに到達したという証拠が見つからなかったことです。この行は をvar_dump($bytes_written, strlen($post_string));出力int(493) int(493)したため、すべてのデータを受信したはずですが、受信していません。

コメントを外すfread($fp, 1);と問題なく動作します。それは有効な解決策かもしれませんが、意味がないようです。もっと良い方法があるはずです!

私の質問は 2 つあります。なぜ はfread($fp, 1);私の問題を解決し、より良い解決策があるのでしょうか?

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

php - PHPサーバーとのhtmlの相対パス

php -S localhost:8000開発サーバーとして使用しています。最後にnginxを使用します。しかし、私はphpサーバーに問題があります。

app/index.htmlは持っています:

cssとjavascriptを使用してブラウザでページを開くと、localhost:8000/app見つかりません。localhost:8000/stylesブラウザはrespを探しています。resplocalhost:8000/scriptsの代わりに。. サーバーなしで、またはnginxでファイルを直接開くと、ファイルが正しく見つかります。したがって、phpサーバーは何かを変更します。何が起きてる?localhost:8000/app/styleslocalhost:8000/app/scripts

Chrome と Firefox で試してみました。両方のブラウザで同じ動作。localhost/app( )で Web サイトを開くと、nginxすべてが期待どおりに機能します。localhost:8000/app( )で Web サイトを開くとphp -S localhost:8000、スクリプトとスタイルが見つかりません。同じファイルルートを持つ同じファイルです。異なる動作はどこから来るのですか?