PHP 如何进行socket套节字的连接
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP 如何进行socket套节字的连接,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3850字,纯文字阅读大概需要6分钟。
内容图文
socket通常也称作"套接字",用于描述IP地址和端口 , 是一个通信链的句柄。应用程序通常通过“套接字”先服务器发出请求或者应答网络请求。本文主要讲述的是在PHP中套节字之间的连接过程,具有一定的参考价值,感兴趣的朋友可以学习了解一下。根据链接启动的方式以及本地套接字要连接的目标 , 套节字之间的连接过程可以分为三个步骤:
1、服务器监听:是服务器端套接字并不定位具体的客户端套接字 , 而是处于等待连接的状态 ,实时监控网络状态。
2、客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先面熟它要连接的服务器的套接字,指出服务器套接字的地址和端口号 , 然后就像服务器端套接字提出连接请求。
3、连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,他就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端 , 一旦客户确认了此描述 , 连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端接字的链接请求。
一、测试环境:
服务器ip:xxx.xxx.xxx.1
客户端ip: xxx.xxx.xxx.2
二 、测试过程:
客户端服务器将在本机(xxx.xxx.xxx.1)通过socket发送数据到服务端(xxx.xxx.xxx.2)的socket服务器上,服务端收到客户端发送的数据后返回一些给客户端.
三、服务端文件内容:
<?php //获取tcp协议号吗. $tcp = getprotobyname("tcp"); //建立server端socket , 创建并返回一个套接字,也称做一个通讯节点.一个典型的网络连接由2个套接字构成 , 一个运行在客户端 , 另一个运行在服务器端. $socket = socket_create(AF_INFT , SOCK_STREAM , $tcp); //绑定要监听的ip和端口 , 这里绑定的ip一定要写局域网ip , 写成127.0.0.1客户端将无法与服务器端建议连接. socket_bind($socket , 'xxx.xxx.xxx.1' , 10008); //监听端口 socket_listen($socket); //初始化一个数据 , 和客户端通信 $buffer = "connect"; while(true){ //接受客户端请求过来的yigesocket连接 $connection = socket-accept($scoket); if(!connection){ echo "connect faild"; } else { echo "Socket connected \n"; //向客户传递一个信息数据 if($buffer != ""){ echo "send data to client\n"; socket_write($connection , $buffer , "\n"); echo "Wrote to socket\n"; } else { echo "no data in the buffer\n"; } //从客户端获取得的数据 while($data = $socket_read($connection , 1024 , PHP_NORMAL_READ)){ printf("Buffer:".$data.'\n'); //取得信息给客户端一个反馈 ,Thank you client , you data is Received success发给客户端的回应信息. socket-wirte($coennection , "Thank you client , you data is Received success \n"); } } //关闭sockket socket_close($connection); printf("Closed the socket\n"); } ?>
四、客户端文件内容:
<?php //建立客户端的socket连接 $socket = se); //连接服务器端socket $connection = socket_connect($socket , 'xxx.xxx.xxx.1' , 10008); //要求发送到服务端的信息. $send_data = "This data will Send to server!"; //客户端去连接服务端并接受服务端返回的数据 , 如果返回的数据保护not connect就提示不能连接. while($buffer = @socket_read($socket , 1024,PHP_NORMAL_READ)){ if(preg_match("/not connect/" , $buffer)){ echo "don't connect\n"; break; } else { //服务端传来的信息 echo "Buffer Data: ".$buffer .'\n'; echo "Writing to Socket\n"; //将客户的信息写道通道中 , 传给服务器端 if(!socket_write($socket , "$send_data\n")){ echo "Write failed\n"; } //服务器端收到信息后 , 客户端接受服务端传给客户端的回应信息. while($buffer = socket_read($socket , 1024 , PHP_NORMAL_READ)){ echo "send to server: $send-data\n response from server was:".$buffer."\n"; } } } ?>
五、在服务端socket服务启动进程。
#/usr/local/php/bin/php -a/home/server.php Interactive mode enable 互动模式启动
六、服务端启动后查看启动的进程及端口
#netstat -tnlp |grep 10008 tcp 0 0 192.168.13:10008 0.0.0.0:* LISTEN 28892/php
七、在客户端(192.168.1.2)上执行传输
#/usr/local/php/bin/php -a client.php Interactive mode enabled
八、回到服务器端上查看接受到的信息。
#/usr/local/php/bin/php -a /home/server.php Interactive mode enabled Socket connected send data client Wrote to socket Buffer:This data will Send to server!
相关教程:PHP视频教程
以上就是PHP 如何进行socket套节字的连接的详细内容。
内容总结
以上是互联网集市为您收集整理的PHP 如何进行socket套节字的连接全部内容,希望文章能够帮你解决PHP 如何进行socket套节字的连接所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。