Linux でソケット プログラミングに php を使用すると、接続拒否エラーが報告されます。ぜひご覧ください。

WBOY
リリース: 2016-06-23 14:39:50
オリジナル
1186 人が閲覧しました

この投稿は、lovegis0101 によって 2011-06-17 08:40:57 に最終的に編集されました

私は Linux、php、ソケットについて触れ始めたところです (笑....)、インターネットでいくつかの情報を見つけました。非常に基本的なものを自分で書きました。クライアント側とサーバー側の 2 つの PHP スクリプトは、Windows でテストすると通信できます。その後、クライアント スクリプトは Linux に配置されましたが、次のエラーが報告されました:
PHP 警告:socket_connect(): 接続できません [111]: 接続が /socketClient.php の 12 行目で拒否されました。12 行目は、ここでのエラーは、socket_connect メソッドです。 システム環境は次のとおりです。Windows システムの IP: 192.168.0.2 と Linux システムの IP: 192.168.102 です。 Linux はブリッジ経由で Wi​​ndows を経由してネットワークに接続できます。
この問題は数日間私を悩ませていましたが、解決策が見つかりませんでした。
スクリプトコードを添付します:
サーバー:
<?php// 设置一些基本的变量global $lat,$lnt;$host = "127.0.0.1";$port = 8888;// 设置超时时间set_time_limit(0);// 创建一个Socket$commonProtocol = getprotobyname("tcp");$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);//绑定Socket到端口$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");$ret = socket_listen($socket, 5);if($ret){	while (true){		$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");;		echo("socket connected\n");		if(!$spawn) break;		$output = "Welcome to the PHP Test Server.....nice\n";		socket_write($spawn, $output, strlen ($output)) or die("error\n");		while($input = socket_read($spawn, 64)){			echo($input);		}		echo("\n");		socket_close($spawn);	}}?>
ログイン後にコピー

クライアント:
<?php// 设置一些基本的变量$host = "192.168.0.2";$port = 8888;// 设置超时时间set_time_limit(0);// 创建一个Socket$commonProtocol = getprotobyname("tcp");$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);if(!$socket) echo "can't creat socket";//绑定Socket到端口$result = socket_connect($socket, $host, $port) or die(socket_strerror());if($result){	$output="hello server!";//lat:30.582029016593196;lnt:103.98662567138672    socket_write($socket, $output, strlen ($output));	$input = socket_read($socket, 1024);	echo($input);}?>
ログイン後にコピー

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

沈むのが早すぎます、助けてください、とても不安です、このステップは機能せず、次のステップも機能しません

winでは動作しますが、linuxでは動作しないため、確認する必要があります環境問題の最初のバー。 。 。

さて、問題が見つかりました。サーバーによって監視されている IP は 127.0.0.1 として記述されるべきではなく、実際の IP は 192.168.0.2 として記述されるはずです。

エラーコード 111 の理由は、サーバープログラムが存在しないか、サーバープログラムが起動していないことです


問題を自分で見つけるのは良いことです。

win では動作しますが、linux では動作しないため、最初に環境の問題を確認する必要があります。 。 。


はは、ヒントをありがとう、私も今日この問題に遭遇しましたが、解決しました

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