php套接字C/S通信 服务端无法接收客户端的信息
程序员文章站
2023-12-30 17:22:58
...
// 建立客户端的socet连接
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//连接服务器端socket
$connection = socket_connect($socket, '192.168.142.27', 10008);
//要发送到服务端的信息。
$info='hello world';
while($connection)
{
socket_write($socket, "$info");
break;
}
?>
如果不加break服务端可以接收到信息,但是是一连串的‘hello world’;
加break则怎么也收不到信息;
初学者,希望好心人解答!谢谢!
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//连接服务器端socket
$connection = socket_connect($socket, '192.168.142.27', 10008);
//要发送到服务端的信息。
$info='hello world';
while($connection)
{
socket_write($socket, "$info");
break;
}
?>
如果不加break服务端可以接收到信息,但是是一连串的‘hello world’;
加break则怎么也收不到信息;
初学者,希望好心人解答!谢谢!
回复讨论(解决方案)
你都退出循环并终止了程序,并且也没有接收服务端返回数据的代码
那么你怎么知道服务端没有收到数据的
break; 去掉才可以,因为你程序退出了就不能收到数据了。
接收代码有:
$tcp = getprotobyname("tcp");
// 建立server端socket ,创建并返回一个套接字,也称作一个通讯节点。一个典型的网络连接由 2 个套接字构成,一个运行在客户端,另一个运行在服务器端。
$socket = socket_create(AF_INET, SOCK_STREAM, $tcp);
//绑定要监听的ip和端口,这里绑定的ip一定要写局域网ip,写成127.0.0.1客户端将无法与服务端建议连接。
socket_bind($socket, '192.168.142.27', 10008);
//监听端口
socket_listen($socket);
$connection = socket_accept($socket);
$data='';
$count=0;
while ($connection)
{
$data=@socket_read($connection,1024,PHP_NORMAL_READ);
printf("Buffer: " . $data . "\n");
break;
}
?>
发现如果while循环超过一定次数接收端会收到一连串“hello”,但当循环次数少于这个数值时,接收端什么数据也收不到(我这次这个数值时204),请问这是什么情况?