php socket通信(tcp/udp)实例分析
本文实例讲述了phpsocket通信(tcp/udp)方法。分享给大家供大家参考,具体如下:
注意
1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1
2.server.php后台跑起来的时候nohupphpserver.php>/var/tmp/a.log2>&1&
一:udp方式
1)server.php
<?php
//error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$socket=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP);
if($socket===false){
echo"socket_create()failed:reason:".socket_strerror(socket_last_error())."\n";
}
$ok=socket_bind($socket,'202.85.218.133',11109);
if($ok===false){
echo"socket_bind()failed:reason:".socket_strerror(socket_last_error($socket));
}
while(true){
$from="";
$port=0;
socket_recvfrom($socket,$buf,1024,0,$from,$port);
echo$buf;
usleep(1000);
}
?>
2)client.php
<?php $sock=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP); $msg='hello'; $len=strlen($msg); socket_sendto($sock,$msg,$len,0,'202.85.218.133',11109); socket_close($sock); ?>
二:TCP方式
1)server.php
<?php
//error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_bind($socket,'192.168.2.143',11109);
socket_listen($socket);
$acpt=socket_accept($socket);
echo"Acpt!\n";
while($acpt){
$words=fgets(STDIN);
socket_write($acpt,$words);
$hear=socket_read($acpt,1024);
echo$hear;
if("bye\r\n"==$hear){
socket_shutdown($acpt);
break;
}
usleep(1000);
}
socket_close($socket)
?>
2)client.php
<?php
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
$con=socket_connect($socket,'192.168.2.143',11109);
if(!$con){socket_close($socket);exit;}
echo"Link\n";
while($con){
$hear=socket_read($socket,1024);
echo$hear;
$words=fgets(STDIN);
socket_write($socket,$words);
if($words=="bye\r\n"){break;}
}
socket_shutdown($socket);
socket_close($sock);
?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《phpsocket用法总结》、《PHP基本语法入门教程》、《PHP错误与异常处理方法总结》及《php常用函数与技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
