Heim > Backend-Entwicklung > PHP-Tutorial > php套接字C/S通信 服务端无法接收客户端的信息

php套接字C/S通信 服务端无法接收客户端的信息

WBOY
Freigeben: 2016-06-23 13:07:33
Original
835 Leute haben es durchsucht

// 建立客户端的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则怎么也收不到信息;

初学者,希望好心人解答!谢谢!


回复讨论(解决方案)

你都退出循环并终止了程序,并且也没有接收服务端返回数据的代码
那么你怎么知道服务端没有收到数据的


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),请问这是什么情况?

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage