PHP套接字不起作用 [英] Php socket doesn't work

查看:97
本文介绍了PHP套接字不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个域名(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆