手机版

php套接字通信的简单实现

时间:2021-09-12 来源:互联网 编辑:宝哥软件园 浏览:

这里没有提到套接字通信的原理,但是它被广泛使用。我们可以使用socket作为API接口,也可以使用socket实现两个程序之间的通信。让我们研究一下如何在php中实现套接字通信。

由于socket服务器的代码要监听端口,等待接收请求,所以php在做socket服务时需要在CMD中运行php文件。

如果希望php文件在CMD中运行,需要设置以下设置:

1.添加一个名为php_HOME且值为的环境变量。PHP文件安装目录中的. exe文件地址,如d : \ wamp \ bin \ PHP \ PHP 5 . 5 . 12 \ php.exe。

2.修改系统变量路径的值

将安装php的目录添加到path的值中:例如d : \ wamp \ bin \ PHP \ PHP 5 . 5 . 12;

好了,我们已经在这里配置了环境变量。接下来,我们打开CMD并想运行php文件,比如aaa.php文件,然后我们写下这样一句话:

php d:\wamp\www\aaa.php

然后按回车键。我们的php文件在cmd中运行,并输出一句话:你好

这样,php文件可以在cmd中成功运行。接下来,让我们看看php是如何实现套接字通信的。

1.php产插座服务器

主要功能是设置套接字通信的IP地址和端口号,监控端口,如果有客户端连接,接收连接请求,接收数据,处理并返回数据。

代码如下:

//确保客户端连接不会超时set _ time _ limit(0);//设置IP和端口号$ address=' 127 . 0 . 0 . 1 ';$ port=2048//调试时可以换更多端口测试程序!/* * *创建一个SOCKET * AF_INET=ipv4。如果使用ipv6,参数为AF_INET6 * SOCK_STREAM是套接字的tcp类型。如果使用UDP,sock _ dgram */$ sock=socket _ create(af _ inet,sock _ stream,SOL_TCP)或die('socket_create()因: '而失败。socket _ strerror(socket _ last _ error())。/n’);//阻塞模式socket _ set _ block ($ sock)或die ('socket _ set _ block()因: '而失败。socket _ strerror(socket _ last _ error())。/n’);//绑定到套接字端口$ result=socket _ bind ($ sock,$ address,$ port)或die ('socket _ bind()因:而失败'。socket _ strerror(socket _ last _ error())。/n’);//开始侦听$ result=socket _ listen ($ sock,4)或die ('socket _ listen()因:而失败'。socket _ strerror(socket _ last _ error())。/n’);回应“确定\ n绑定$ address: $端口上的套接字.”;回应“确定\否”准备接受连接。\ n套接字上的连接.\ n ';Do {//永远不要停止守护进程//它接收连接请求并调用一个子连接Socket来处理客户端和服务器之间的信息。$ msg stok=socket _ accept($ sock)或die ('socket _ accept())失败:原因: '。socket _ stress(socket _ last _ error())//读取客户端数据回显“读取客户端数据\ n”;socket _ read函数将读取客户端数据,直到它满足\n,\t或\0个字符。PHP脚本将这个书写字符视为输入的终止符。$ buf=socket _ read ($ msgstock,8192);回声“已收到msg : $ buf \ n”;//数据传输将返回结果$msg='欢迎使用\n '写入客户端;socket _ write($msg锁,$ msg,strlen($msg))或die('socket_write()'失败:原因: '。socket _ strerror(socket _ last _ error())。/n’);//一旦输出返回给客户端,父/子套接字应该通过socket _ close ($ msglock)函数终止socket _ close($ msglock);} while(true);socket _ close($ sock);2.检索套接字服务的客户端文件

客户端仍然需要设置要访问的服务器的IP地址和端口号(即上一步中的IP和端口)。之后,它创建一个套接字连接,向服务器发送数据,并接收返回的数据。

set _ time _ limit(0);$ host=' 127 . 0 . 0 . 1 ';$ port=2048$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)或die('无法创建socket \ n ');//创建套接字$ connect=socket _ connect($ socket,$ host,$ port)或die('无法连接服务器\ n ');//connect socket _ write ($ socket,' hello socket ')或die(' write failed \ n ');//数据传输向服务器发送消息,同时($ buff=@ socket _ read ($ socket,1024,PHP _ normal _ read)) {echo('响应为: '。$ buff。\ n ');} socket _ close($ socket);3.在cmd中运行服务器代码

运行成功,已经在监听端口。

4.在网页中运行我们的客户端网页,与服务器交换数据

运行时,浏览器显示:

cmd中的服务器显示:

这是对套接字通信的简单测试。至于套接字接收什么数据,如何处理数据,返回什么类型的数据,逻辑需要php。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:php套接字通信的简单实现是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。