设为首页 收藏本站
查看: 520|回复: 0

[经验分享] php+sockets

[复制链接]

尚未签到

发表于 2017-3-3 10:47:07 | 显示全部楼层 |阅读模式
  --------------------------------------------------------------------开启端口建立通信
  server.php
  <?php
//确保在连接客户端时不会超时
set_time_limit (0 );

//设置IP和端口号
$address = '127.0.0.1' ;
$port = 2003 ;    //调试的时候,可以多换端口来测试程序!

//创建一个SOCKET
if (($sock = socket_create(AF_INET , SOCK_STREAM , SOL_TCP ))< 0 )
{
echo "socket_create() 失败的原因是:" . socket_strerror ($sock ). "<br>" ;
}

//绑定到socket端口
if (($ret = socket_bind ($sock , $address , $port ))< 0 )
{
echo "socket_bind() 失败的原因是:" . socket_strerror ($ret ). "<br>" ;
}

//开始监听
if (($ret = socket_listen ($sock , 4 ))< 0 )
{
echo "socket_listen() 失败的原因是:" . socket_strerror ($ret ). "<br>" ;
}

do {
if (($msgsock = socket_accept ($sock )) < 0 )
{
echo "socket_accept() failed: reason: " . socket_strerror ($msgsock ) . " \n " ;
break ;
}

//发到客户端
$msg = "<font color=red>欢迎进入服务器!</font><br>" ;
socket_write ($msgsock , $msg , strlen ($msg ));

echo "读取客户端发来的信息<br>" ;
$buf = socket_read ($msgsock , 8192 );


$talkback = "收到的信息: $buf <br>" ;
echo $talkback ;
/* if(socket_write($msgsock, $talkback, strlen($talkback))<0)
     {
      echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "\n";
     }
     else
     {
      echo "发送成功";
     }*/


//echo $buf;
socket_close ($msgsock );
} while (true );

socket_close ($sock );
?>
  client.php
  <?php
error_reporting (E_ALL );
set_time_limit (0 );
echo "<h2>TCP/IP Connection</h2> \n " ;

$service_port = 2003 ;
$address = "127.0.0.1" ;


$socket = socket_create (AF_INET , SOCK_STREAM , SOL_TCP );
if ($socket < 0 )
{
echo "socket_create() failed: reason: " . socket_strerror ($socket ) . " \n " ;
}
else
{
echo "OK. \n " ;
}

echo "试图连接 ' $address ' 端口 ' $service_port '...<br>" ;
$result = socket_connect ($socket , $address , $service_port );
if ($result < 0 )
{
echo "socket_connect() failed. \n Reason: ( $result ) " . socket_strerror ($result ) . " \n " ;
}
else
{
echo "连接OK<br>" ;
}

//sleep(100);


$in = "Hello \r\n " ;
$in .= "我是Chester \r\n " ;
$out = '' ;
$out1 = '' ;


if (!socket_write($socket , $in , strlen ($in )))
{
echo "socket_write() failed: reason: " . socket_strerror ($socket ) . " \n " ;
}
else
{
echo "发送到服务器信息成功!<br>" ;
echo "发送的内容为:<font color='red'> $in </font> <br>" ;
}

while ($out = socket_read ($socket , 8192 ))
{
echo "接收服务器回传信息成功!<br>" ;
echo "接受的内容为:" , $out ;
}


echo "关闭SOCKET...<br>" ;
socket_close ($socket );
echo "关闭OK<br>" ;
?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349622-1-1.html 上篇帖子: php引用 下篇帖子: php 案例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表