求解:PHP socket 的有关问题
程序员文章站
2022-05-21 17:42:26
...
求解:PHP socket 的问题
下面这段测试代码,我在本地用appserv搭建的环境,执行无误。而且可以用客户端连上去并执行。
但是,我放到vps上之后,它显示该端口是打开的,而且无法再次打开(第二遍执行这个脚本的时候,返回错误信息,端口已被占用)。我扫描端口发现9999确实已经是一个打开的UDP端口,但是,用客户端连得上去却没法完成通信(或许不可以发,或许不可以收,who knows。。。)
下面是phpinfo的结果,显示socket支持是打开的。(太长了,ctr+f后找到的socket都在这里了)
额,哪位大牛有过经验,跪谢啊~
------解决方案--------------------
换一个端口号
已打开的端口,就不能重复打开
------解决方案--------------------
看看防火墙什么的
------解决方案--------------------
9999 是已经打开的端口没错 但是你有没有9999这个端口有没有没其它的程序所占用 如果没有被其它的程序所占用那么可能考虑设置一下防火墙
否则的话 就换一个新的端口或者关闭占用9999端口的程序
也可以把那个程序换一个其它的端口
总之一个端口只能映射给一个程序
下面这段测试代码,我在本地用appserv搭建的环境,执行无误。而且可以用客户端连上去并执行。
//Reduce errors
error_reporting(~E_WARNING);
//Create a UDP socket
if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't create socket: [$errorcode] $errormsg \n");
}
echo "Socket created \n";
// Bind the source address
if( !socket_bind($sock, "localhost" , 9999) )
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not bind socket : [$errorcode] $errormsg \n");
}
echo "Socket bind OK \n";
//Do some communication, this loop can handle multiple clients
while(1)
{
echo "Waiting for data ... \n";
//Receive some data
$r = socket_recvfrom($sock, $buf, 512, 0, $remote_ip, $remote_port);
echo "$remote_ip : $remote_port -- " . $buf;
//Send back the data to the client
socket_sendto($sock, "OK " . $buf , 100 , 0 , $remote_ip , $remote_port);
}
socket_close($sock);
?>
但是,我放到vps上之后,它显示该端口是打开的,而且无法再次打开(第二遍执行这个脚本的时候,返回错误信息,端口已被占用)。我扫描端口发现9999确实已经是一个打开的UDP端口,但是,用客户端连得上去却没法完成通信(或许不可以发,或许不可以收,who knows。。。)
下面是phpinfo的结果,显示socket支持是打开的。(太长了,ctr+f后找到的socket都在这里了)
Configure Command './configure' '--prefix=/usr/local/php5' '--enable-force-cgi-redirect' '--enable-fastcgi' '--with-config-file-path=/usr/local/etc/php5/cgi' '--with-curl=/usr/local/lib' '--with-gd' '--with-gettext' '--with-jpeg-dir=/usr/local/lib' '--with-freetype-dir=/usr/local/lib' '--with-kerberos' '--with-openssl' '--with-mcrypt' '--with-mhash' '--with-mysql=/usr' '--with-mysqli=/usr/bin/mysql_config' '--with-pcre-regex=/usr/local' '--with-pdo-mysql=/usr' '--with-pear' '--with-png-dir=/usr/local/lib' '--with-xsl' '--with-zlib' '--with-zlib-dir=/usr/local/lib' '--enable-zip' '--enable-gd-native-ttf' '--with-iconv=/usr/local' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-mbstring'
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
sockets
Sockets Support enabled
default_socket_timeout 60 60
额,哪位大牛有过经验,跪谢啊~
------解决方案--------------------
换一个端口号
已打开的端口,就不能重复打开
------解决方案--------------------
看看防火墙什么的
------解决方案--------------------
9999 是已经打开的端口没错 但是你有没有9999这个端口有没有没其它的程序所占用 如果没有被其它的程序所占用那么可能考虑设置一下防火墙
否则的话 就换一个新的端口或者关闭占用9999端口的程序
也可以把那个程序换一个其它的端口
总之一个端口只能映射给一个程序
相关文章
相关视频
上一篇: Photoshop 打造超酷的抽象风格光影海报效果
下一篇: php制作图像的有关问题
推荐阅读
-
关于PHP5.6+版本“No input file specified”问题的解决
-
PHP的foreach中使用引用时需要注意的一个问题和解决方法
-
ECshop 迁移到 PHP7版本时遇到的兼容性问题
-
WampServer搭建php环境时遇到的问题汇总
-
PHP中遇到的时区问题解决方法
-
解决php的“It is not safe to rely on the system’s timezone settings”问题
-
python代码实现求解最值问题的模拟退火
-
约瑟夫问题的Python和C++求解方法
-
php中的路径问题与set_include_path使用介绍
-
php的慢速日志引起的Mysql错误问题分析