Linux でソケット プログラミングに php を使用すると、接続拒否エラーが報告されます。ご覧ください。
この投稿は、2011-06-17 08:40:57 に lovegis0101 によって最終的に編集されました
私は Linux、PHP、ソケットに触り始めたところです (笑)。インターネットでいくつかの情報を見つけて、クライアントとサーバーという 2 つの非常に基本的な PHP スクリプトを作成しました。それらを Windows でテストしたところ、通信できることがわかりました。 。クライアント スクリプトを Linux に配置した後、次のエラーが報告されました:
PHP 警告:socket_connect(): 接続できません [111]: /socketClient.php の 12 行目で接続が拒否されました、12 行目はソケット接続メソッドを呼び出しています。ここでエラーが発生しました
システム環境は次のとおりです。Windows システムの IP: 192.168.0.2 と Linux システムの IP: 192.168.102 に Linux 仮想マシンをインストールしました。 Windows 経由でネットワークに接続します。
この問題に数日間悩まされていますが、解決策が見つかりませんでした。
スクリプト コードを添付します:
サーバー:
<br />
<?php<br />
// 设置一些基本的变量<br />
global $lat,$lnt;<br />
$host = "127.0.0.1";<br />
$port = 8888;<br />
// 设置超时时间<br />
set_time_limit(0);<br />
// 创建一个Socket<br />
$commonProtocol = getprotobyname("tcp");<br />
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);<br />
<br />
//绑定Socket到端口<br />
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");<br />
$ret = socket_listen($socket, 5);<br />
if($ret){<br />
while (true){<br />
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");;<br />
echo("socket connected\n");<br />
if(!$spawn) break;<br />
$output = "Welcome to the PHP Test Server.....nice\n";<br />
socket_write($spawn, $output, strlen ($output)) or die("error\n");<br />
while($input = socket_read($spawn, 64)){<br />
echo($input);<br />
}<br />
echo("\n");<br />
socket_close($spawn);<br />
}<br />
}<br />
?><br />
ログイン後にコピー
クライアント:
<br />
<?php<br />
// 设置一些基本的变量<br />
$host = "192.168.0.2";<br />
$port = 8888;<br />
// 设置超时时间<br />
set_time_limit(0);<br />
// 创建一个Socket<br />
$commonProtocol = getprotobyname("tcp");<br />
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);<br />
if(!$socket) echo "can't creat socket";<br />
//绑定Socket到端口<br />
$result = socket_connect($socket, $host, $port) or die(socket_strerror());<br />
if($result){<br />
$output="hello server!";//lat:30.582029016593196;lnt:103.98662567138672<br />
socket_write($socket, $output, strlen ($output));<br />
$input = socket_read($socket, 1024);<br />
echo($input);<br />
}<br />
?><br />
ログイン後にコピー