error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
$address = '127.0.0.1';
$port = 10000;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));
do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
?>这是我从网上找的socket服务端的代码。。。不知道有没有问题。。从网上找的代码大多都一样。。但一运行就出错了。
要么是cpu占用内存100%,要不就出错:
出错的提示是:
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 in D:\phpnow\htdocs\test\server.php on line 12
Warning: socket_listen() [function.socket-listen]: unable to listen on socket [0]: 提供了一个无效的参数。 in D:\phpnow\htdocs\test\server.php on line 16
Wainting fro a connection:
Fatal error: Maximum execution time of 30 seconds exceeded in D:\phpnow\htdocs\test\server.php on line 28
希望高手指教。。我很着急。。。在此先谢过各位朋友。。
17 个解决方案
#1
#2
是。。。现在暂时不考虑flash
#3
现在暂时不考虑flash的问题,希望高手赐教!
#4
没人回?自己顶!
#5
你那个端口已经被使用了呢,试着从手册里面找个例子看看吧!
#6
server.php
确定端口没有被占。。。。。。。。。。。。。。。。。。。。。。。。。。。。
大家帮看看啊。。。不知道这个服务端的程序是不是可以直接运行???比如直接运行server.php????还是需要在命令提示符下运行???本人用的是phpnow。。。在windows平台下。。
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
$address = '127.0.0.1';
$port = 10000;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));
do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
确定端口没有被占。。。。。。。。。。。。。。。。。。。。。。。。。。。。
大家帮看看啊。。。不知道这个服务端的程序是不是可以直接运行???比如直接运行server.php????还是需要在命令提示符下运行???本人用的是phpnow。。。在windows平台下。。
#7
还是没有回帖啊。。。
自己顶啊。。。
自己顶啊。。。
#8
命令行下 php server.php 可以直接運行PHP文件
#9
帮你顶!!!
#10
帮你顶上去
#11
命令行运行——就OK了程序应该没问题,手册上抄的吧
#12
关键是怎么用命令行执行?????????????请说明白一点好吗???谢谢
#13
关键是怎么用命令行执行?????????????请说明白一点好吗???谢谢!!!
本人是新手。。。不懂。。希望内给出代码?????
本人是新手。。。不懂。。希望内给出代码?????
#14
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次
我在命令行模式下运行了,同样出现以上错误提示!!!
我在命令行模式下运行了,同样出现以上错误提示!!!
#15
刚才测试了一下你的代码,没有发现你说的问题。
可能是你的环境有问题,比如:php没有配置好;WEB服务器设置问题;防火墙问题。。。。
另外,你帖出的代码是真实的吗?为什么错误提示中,出错行不对?
1、<?php
2、error_reporting(E_ALL);
3、
4、/* Allow the script to hang around waiting for connections. */
5、set_time_limit(0);
6、
7、/* Turn on implicit output flushing so we see what we're getting
8、* as it comes in. */
9、ob_implicit_flush();
10、
11、$address = '127.0.0.1';
12、$port = 10000;
13、
14、if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
15、 echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
16、}
17、
18、if (($ret = socket_bind($sock, $address, $port)) < 0) {
19、 echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
20、}
21、
22、if (($ret = socket_listen($sock, 5)) < 0) {
23、 echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
24、}
25、
26、do {
27、 if (($msgsock = socket_accept($sock)) < 0) {
28、 echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
29、 break;
30、 }
31、 /* Send instructions. */
。。。。。
出错的提示是:
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 in D:\phpnow\htdocs\test\server.php on line 12
Warning: socket_listen() [function.socket-listen]: unable to listen on socket [0]: 提供了一个无效的参数。 in D:\phpnow\htdocs\test\server.php on line 16
Wainting fro a connection:
Fatal error: Maximum execution time of 30 seconds exceeded in D:\phpnow\htdocs\test\server.php on line 28
第5行就有 set_time_limit(0); 怎么可能超时呢?
可能是你的环境有问题,比如:php没有配置好;WEB服务器设置问题;防火墙问题。。。。
另外,你帖出的代码是真实的吗?为什么错误提示中,出错行不对?
1、<?php
2、error_reporting(E_ALL);
3、
4、/* Allow the script to hang around waiting for connections. */
5、set_time_limit(0);
6、
7、/* Turn on implicit output flushing so we see what we're getting
8、* as it comes in. */
9、ob_implicit_flush();
10、
11、$address = '127.0.0.1';
12、$port = 10000;
13、
14、if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
15、 echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
16、}
17、
18、if (($ret = socket_bind($sock, $address, $port)) < 0) {
19、 echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
20、}
21、
22、if (($ret = socket_listen($sock, 5)) < 0) {
23、 echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
24、}
25、
26、do {
27、 if (($msgsock = socket_accept($sock)) < 0) {
28、 echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
29、 break;
30、 }
31、 /* Send instructions. */
。。。。。
出错的提示是:
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 in D:\phpnow\htdocs\test\server.php on line 12
Warning: socket_listen() [function.socket-listen]: unable to listen on socket [0]: 提供了一个无效的参数。 in D:\phpnow\htdocs\test\server.php on line 16
Wainting fro a connection:
Fatal error: Maximum execution time of 30 seconds exceeded in D:\phpnow\htdocs\test\server.php on line 28
第5行就有 set_time_limit(0); 怎么可能超时呢?
#16
现在上边的问题是暂时解决了
我的socket扩展是打开的,但是为什么我在命令行里边运行的时候却说socket_create()是未定义的函数?还有没有其他的可以建立socket连接的函数?
#17
如果你的php.ini配置在 c:\windows下 你拷贝一份到 php.exe 目录下面就可以了
#1
#2
是。。。现在暂时不考虑flash
#3
现在暂时不考虑flash的问题,希望高手赐教!
#4
没人回?自己顶!
#5
你那个端口已经被使用了呢,试着从手册里面找个例子看看吧!
#6
server.php
确定端口没有被占。。。。。。。。。。。。。。。。。。。。。。。。。。。。
大家帮看看啊。。。不知道这个服务端的程序是不是可以直接运行???比如直接运行server.php????还是需要在命令提示符下运行???本人用的是phpnow。。。在windows平台下。。
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
$address = '127.0.0.1';
$port = 10000;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));
do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
确定端口没有被占。。。。。。。。。。。。。。。。。。。。。。。。。。。。
大家帮看看啊。。。不知道这个服务端的程序是不是可以直接运行???比如直接运行server.php????还是需要在命令提示符下运行???本人用的是phpnow。。。在windows平台下。。
#7
还是没有回帖啊。。。
自己顶啊。。。
自己顶啊。。。
#8
命令行下 php server.php 可以直接運行PHP文件
#9
帮你顶!!!
#10
帮你顶上去
#11
命令行运行——就OK了程序应该没问题,手册上抄的吧
#12
关键是怎么用命令行执行?????????????请说明白一点好吗???谢谢
#13
关键是怎么用命令行执行?????????????请说明白一点好吗???谢谢!!!
本人是新手。。。不懂。。希望内给出代码?????
本人是新手。。。不懂。。希望内给出代码?????
#14
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次
我在命令行模式下运行了,同样出现以上错误提示!!!
我在命令行模式下运行了,同样出现以上错误提示!!!
#15
刚才测试了一下你的代码,没有发现你说的问题。
可能是你的环境有问题,比如:php没有配置好;WEB服务器设置问题;防火墙问题。。。。
另外,你帖出的代码是真实的吗?为什么错误提示中,出错行不对?
1、<?php
2、error_reporting(E_ALL);
3、
4、/* Allow the script to hang around waiting for connections. */
5、set_time_limit(0);
6、
7、/* Turn on implicit output flushing so we see what we're getting
8、* as it comes in. */
9、ob_implicit_flush();
10、
11、$address = '127.0.0.1';
12、$port = 10000;
13、
14、if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
15、 echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
16、}
17、
18、if (($ret = socket_bind($sock, $address, $port)) < 0) {
19、 echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
20、}
21、
22、if (($ret = socket_listen($sock, 5)) < 0) {
23、 echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
24、}
25、
26、do {
27、 if (($msgsock = socket_accept($sock)) < 0) {
28、 echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
29、 break;
30、 }
31、 /* Send instructions. */
。。。。。
出错的提示是:
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 in D:\phpnow\htdocs\test\server.php on line 12
Warning: socket_listen() [function.socket-listen]: unable to listen on socket [0]: 提供了一个无效的参数。 in D:\phpnow\htdocs\test\server.php on line 16
Wainting fro a connection:
Fatal error: Maximum execution time of 30 seconds exceeded in D:\phpnow\htdocs\test\server.php on line 28
第5行就有 set_time_limit(0); 怎么可能超时呢?
可能是你的环境有问题,比如:php没有配置好;WEB服务器设置问题;防火墙问题。。。。
另外,你帖出的代码是真实的吗?为什么错误提示中,出错行不对?
1、<?php
2、error_reporting(E_ALL);
3、
4、/* Allow the script to hang around waiting for connections. */
5、set_time_limit(0);
6、
7、/* Turn on implicit output flushing so we see what we're getting
8、* as it comes in. */
9、ob_implicit_flush();
10、
11、$address = '127.0.0.1';
12、$port = 10000;
13、
14、if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
15、 echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
16、}
17、
18、if (($ret = socket_bind($sock, $address, $port)) < 0) {
19、 echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
20、}
21、
22、if (($ret = socket_listen($sock, 5)) < 0) {
23、 echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
24、}
25、
26、do {
27、 if (($msgsock = socket_accept($sock)) < 0) {
28、 echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
29、 break;
30、 }
31、 /* Send instructions. */
。。。。。
出错的提示是:
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 in D:\phpnow\htdocs\test\server.php on line 12
Warning: socket_listen() [function.socket-listen]: unable to listen on socket [0]: 提供了一个无效的参数。 in D:\phpnow\htdocs\test\server.php on line 16
Wainting fro a connection:
Fatal error: Maximum execution time of 30 seconds exceeded in D:\phpnow\htdocs\test\server.php on line 28
第5行就有 set_time_limit(0); 怎么可能超时呢?
#16
现在上边的问题是暂时解决了
我的socket扩展是打开的,但是为什么我在命令行里边运行的时候却说socket_create()是未定义的函数?还有没有其他的可以建立socket连接的函数?
#17
如果你的php.ini配置在 c:\windows下 你拷贝一份到 php.exe 目录下面就可以了