Heim >Backend-Entwicklung >PHP-Tutorial >linux中使用php进行socket编程,报拒绝连接错误,请大家看看

linux中使用php进行socket编程,报拒绝连接错误,请大家看看

WBOY
WBOYOriginal
2016-06-23 14:39:501218Durchsuche

本帖最后由 lovegis0101 于 2011-06-17 08:40:57 编辑

本人刚开始接触Linux和php和socket(呵呵....),在网上找了点资料,自己写了很基本的client端与server端两个php脚本,在Windows下测试,是可以通信的。之后把client端脚本放在Linux下,却报出如下错误:
PHP Warning:  socket_connect(): unable to connect [111]: Connection refused in /socketClient.php on line 12,12行是调用socket_connect方法,在这里出的错
系统环境是这样的,我在Windows系统主机里装了Linux虚拟机,Windows系统ip:192.168.0.2,Linux系统ip:192.168.102,两个系统网络通过桥接连接,Linux可以通过Windows来连接网络。
这个问题困扰我好几天了,在网上搜索,也没有找到解决方法,请大家帮忙看看啊
附上脚本代码:
server:
<?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);	}}?>

client:
<?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不行,那你应该先查一下环境问题吧。。。

好吧,问题找到了,server端监听的ip不应该写127.0.0.1,而要写实际ip,192.168.0.2。
报111的错误代码原因就是是没有服务器程序,或者服务器程序没有启动的原因

自己找到问题很好。

既然是win可以,linux不行,那你应该先查一下环境问题吧。。。


哈哈 多谢提示 我今天也遇到这个问题 然后解决了

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:添加地址链接Nächster Artikel:Yii调用mysql存储过程