PHP套接字不起作用 [英] Php socket doesn't work
问题描述
我有一个域名(ad-box.deslab.vn)。我想PHP套接字与客户端进行通信。但是,在我运行程序后,它有错误:
****警告:socket_bind():无法绑定地址[22]:/ home中的参数无效第27行/vietchip/public_html/deslab.vn/ad-box/index.php socket_bind()失败:原因:无效参数socket_bind()失败:原因:无效参数****
链接:ad-box.deslab.vn/index.php
代码:
<?php
error_reporting(E_ALL);
/ *允许脚本等待连接。 * /
set_time_limit(0);
/ *启用隐式输出刷新,以便我们看到我们得到的内容
*因为它进来。* /
ob_implicit_flush();
$ address =181.224.157.142;
$ port = 10000;
//创建套接字
$ sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP );
if($ sock === false){
echosocket_create()失败:原因:。 socket_strerror(socket_last_error())。 \ n;
}
if(!socket_set_option($ sock,SOL_SOCKET,SO_REUSEADDR,1)){
echo socket_strerror( socket_last_error($袜子));
退出;
}
//将套接字绑定到端口
socket_bind($ sock,$ address,$ port) ;
if(socket_bind($ sock,$ address,$ port)=== false){
echosocket_bind()失败:原因:。 socket_strerror(socket_last_error($ sock))。 \ n;
}
//开始收听连接
socket_listen($ sock, 5); //最大为5连接
if(socket_listen($ sock,5)=== false){
echosocket_listen()失败:原因:。 socket_strerror(socket_last_error($ sock))。 \ n;
}
//处理来自客户的连接
do {
$ msgsock = socket_accept($ sock); // msgsock是连接到webserver的客户端
if($ msgsock === false){
echosocket_accept()failed:reason:。 socket_strerror(socket_last_error($ sock))。 \ n;
休息;
}
$ request =PHP说:你是发送。 socket_read($ msgsock,2048,PHP_BINARY_READ);
socket_write($ msgsock,$ request,strlen($ request));
socket_close($ msgsock); //关闭客户端连接
} while(true);
socket_close($ sock); //关闭服务器套接字
?>
请帮我修复此错误。非常感谢。
我的尝试:
我有尝试了大约1个月的方法,但它不起作用
I have a domain (ad-box.deslab.vn). I want to PHP socket to communicate with clients. However, After I run program, it has error:
****Warning: socket_bind(): unable to bind address [22]: Invalid argument in /home/vietchip/public_html/deslab.vn/ad-box/index.php on line 27 socket_bind() failed: reason: Invalid argument socket_bind() failed: reason: Invalid argument****
Link: ad-box.deslab.vn/index.php
Code:
<?php
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 = "181.224.157.142";
$port = 10000;
// Create Socket
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($sock === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}
if (!socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1)) {
echo socket_strerror(socket_last_error($sock));
exit;
}
// Bind socket to port
socket_bind($sock, $address, $port);
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
// Start listening for connection
socket_listen($sock, 5); // Maximum is 5 connection
if (socket_listen($sock, 5) === false) {
echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
// Handling connection from client
do {
$msgsock = socket_accept($sock); // msgsock is a client connect to webserver
if ($msgsock === false) {
echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}
$request ="PHP said : you are sent " . socket_read($msgsock, 2048, PHP_BINARY_READ);
socket_write($msgsock, $request, strlen($request));
socket_close($msgsock); // Close connect of client
} while (true);
socket_close($sock); // Close socket of server
?>
Please help me fix this error. Thanks so much.
What I have tried:
I have tried a lot of method about 1 month, but it doesn't work
推荐答案
address =181.224.157.142;
address = "181.224.157.142";
port = 10000;
//创建套接字
port = 10000;
// Create Socket
sock = socket_create(AF_INET, SOCK_STREAM,SOL_TCP);
if(
sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (
这篇关于PHP套接字不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!