socket监听端口实现实时通讯
来源:互联网 发布:防止sql注入最佳方法 编辑:程序博客网 时间:2024/06/06 02:32
socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现socket通信。(李昌辉)
1.php制作的socket服务端
主要功能是设置socket通信的IP地址及端口号,监听端口,有客户端连接的话,接收连接请求接收数据,处理并且返回数据。
代码如下:
//确保在连接客户端时不会超时set_time_limit(0);//设置IP和端口号$address = "127.0.0.1";$port = 2048; //调试的时候,可以多换端口来测试程序!/** * 创建一个SOCKET * AF_INET=是ipv4 如果用ipv6,则参数为 AF_INET6 * SOCK_STREAM为socket的tcp类型,如果是UDP则使用SOCK_DGRAM*/$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");//阻塞模式socket_set_block($sock) or die("socket_set_block() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");//绑定到socket端口$result = socket_bind($sock, $address, $port) or die("socket_bind() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");//开始监听$result = socket_listen($sock, 4) or die("socket_listen() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");echo "OK\nBinding the socket on $address:$port ... ";echo "OK\nNow ready to accept connections.\nListening on the socket ... \n";do { // never stop the daemon //它接收连接请求并调用一个子连接Socket来处理客户端和服务器间的信息 $msgsock = socket_accept($sock) or die("socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n"); //读取客户端数据 echo "Read client data \n"; //socket_read函数会一直读取客户端数据,直到遇见\n,\t或者\0字符.PHP脚本把这写字符看做是输入的结束符. $buf = socket_read($msgsock, 8192); echo "Received msg: $buf \n"; //数据传送 向客户端写入返回结果 $msg = "welcome \n"; socket_write($msgsock, $msg, strlen($msg)) or die("socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n"); //一旦输出被返回到客户端,父/子socket都应通过socket_close($msgsock)函数来终止 socket_close($msgsock);} while (true);socket_close($sock);
2.调取socket服务的客户端文件
客户端依然是要设置好要访问服务器的IP地址及端口号(即上一步骤中的IP及端口),完了创建一个socket连接,发送数据到服务器,接收返回数据。
set_time_limit(0);$host = "127.0.0.1";$port = 2048;$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)or die("Could not create socket\n"); // 创建一个Socket $connection = socket_connect($socket, $host, $port) or die("Could not connet server\n"); // 连接socket_write($socket, "hello socket") or die("Write failed\n"); // 数据传送 向服务器发送消息while ($buff = @socket_read($socket, 1024, PHP_NORMAL_READ)) { echo("Response was:" . $buff . "\n");}socket_close($socket);
这是一个简单的socket通信的测试,至于socket接收到什么数据,怎么处理数据,返回什么类型的数据,还需要使用php来做逻辑了。
0 0
- socket监听端口实现实时通讯
- 实时监听服务器端口状态
- Socket通讯 完成端口 怎么实现同时收发
- iOS实时通讯之socket
- 实时通讯之Socket.io
- 实时通讯之Socket.io
- socket通讯之完成端口
- Socket监听本机端口
- socket监听端口读取端口信息
- socket实现一对一通讯
- socket实现一对一通讯
- 利用socket实现通讯
- python实现socket通讯
- C++实现Socket通讯
- SSE实现web实时通讯
- iocp完成端口与socket通讯
- JTextField实现实时动态监听
- JTextField实现实时动态监听
- org.JSONObeject,org.JSONArray,net.sf.JSONObject方法的使用,用java解析json数据的方法
- Statement、Prepared Statement 和Callable Statement
- 开启ubuntu下lamp的php错误提示
- easy-ui combobox
- 锁屏后还能继续运行只设置UIBackgroundModes就可以了吗
- socket监听端口实现实时通讯
- Spring MVC 4 RESTFul Web Services CRUD例子(带源码)【这才是restful,超经典】
- 用Qt来进行256色位图的转换
- 把uiviewcontroller对象作为某个类的属性
- imx6编译出错问题解决
- BorePlugin插件
- C语言学习11-25
- ROS学习(六):CMakeLists.txt 文件
- static作用(修饰函数、局部变量、全局变量)