2

PHP の socket_connect() 関数を使用して C で記述されたターゲットに接続しようとしていますが、次のエラーが発生します。

警告: socket_connect(): 接続できません [10061]: ターゲット マシンがアクティブに拒否したため、接続できませんでした。

これは私が実行しているコードです:

    $service_port = 1234; 
    $address = "xx.xxx.xx.xxx";
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);     
    if ($socket === false) {
        echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
    } else {
        echo "OK.\n<br>";
    }       
    echo "Attempting to connect to '$address' on port '$service_port'...\n";        

    $result = socket_connect($socket, $address, $service_port);

    if ($result === false) {
        echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
    } else {
        echo "OK.\n<br>";
    }

Windows 7 で PHP 5.4 で xampp サーバーを使用しており、ファイアウォール設定を無効にしています。それでも、同じ拒否エラーが発生します。

この問題を解決するのを手伝ってください。[過去 3 日間、この問題と戦っています]

前もって感謝します。

4

3 に答える 3

0

これは古い投稿だと思いますが、最近、IIS 7 で実行されている php を使用してこの問題が発生し、何度も Google 検索を行っても解決策を見つけることができませんでした。

多くのサイトでは、php.ini ファイルを変更してソケットを有効にすることを提案しています (その後、IIS を停止して再起動します)。

ソケットを機能させるには、IIS 7 Manager 内でソケットを有効にする必要があることがわかりました。

php.ini ファイルを手動で変更するだけでは、php 内でソケットが有効にならないことがわかりました (IIS 7 と共に)。以下のサンプル コードは、phpinfo(); を表示します。ソケットが有効になっている場合は、Sockets という名前の特定のセクションがあり、それ自体が有効になっていることが示されます。

IIS Manager 7 --> PHP Manager まで下にスクロールして選択 --> PHP 拡張機能まで下にスクロールし、拡張機能を有効/無効にするオプションを選択 --> ソケットがまだ有効になっていない場合は有効にする --> IIS を再起動します。

私はデスクトップソケットサーバー(私が書いた-ポート9999を使用)を実行していて、私が書いたデスクトップクライアント(テスト用、同じWindows 7 PCで実行)を使用してサーバーに接続できましたが、で実行されているphpを使用して接続できませんでした同じパソコン。

接続をテストするための私のphpコードは次のようになります。

<?php
echo "hello<br><br>";
echo phpinfo();
$fp = stream_socket_client("tcp://127.0.0.1:9999", $errno, $errstr, 30);
if (!$fp) {
   echo "error<br><br>";
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, "GET / HTTP/1.0\r\nHost: www.google.com\r\nAccept: */*\r\n\r\n"); //just returns an acknowledgement
    while (!feof($fp)) {
        echo fgets($fp, 1024);
    }
    fclose($fp);
}
?>

これが誰かに役立つことを願っています。

ケン

于 2016-11-07T15:32:00.173 に答える
0

以下のリンクがお役に立てば幸いです。ソリューションをチェックアウトします。 http://www.codeproject.com/Questions/426966/System-Net-Sockets-SocketExcep

于 2013-07-17T12:39:38.807 に答える