用PHP的socket实现客户端到服务端的通信实例详解
发布:smiling 来源: PHP粉丝网 添加日期:2018-07-26 13:44:09 浏览: 评论:0
一、server.php服务端:
- <?php
- error_reporting(E_ALL);
- set_time_limit(0);
- ob_implicit_flush();
- //本地IP
- $address='localhost';
- //设置用111端口进行通信
- $port= 111;
- //创建SOCKET
- if(($sock= socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
- echo"socket创建失败原因 ". socket_strerror($sock) ."\n";
- }
- if(($ret= socket_bind($sock,$address,$port)) < 0) {
- echo"创建套接字失败原因 ". socket_strerror($ret) ."\n";
- }
- //监听
- if(($ret= socket_listen($sock, 5)) < 0) {
- echo"监听失败原因 ". socket_strerror($ret) ."\n";
- }
- do{
- //接收命令
- if(($msgsock= @socket_accept($sock)) < 0) {
- echo"命令接收失败原因: ". socket_strerror($msgsock) ."\n";
- break;
- }
- $msg="\nPHP Test Server. \n"."用quit,shutdown,sun...等命令测试.\n";
- @socket_write($msgsock,$msg,strlen($msg));
- do{
- if(false === ($buf= @socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
- echo"socket_read() failed: reason: ". socket_strerror($ret) ."\n";
- break2;
- }
- if(!$buf= trim($buf)) {
- continue;
- }
- if($buf=='quit') {
- break;
- }
- if($buf=='shutdown') {
- socket_close($msgsock);
- break2;
- }
- if($buf=='sun') {
- echo'what are you doing?';
- }
- $talkback="Backinformation : '$buf'.\n";
- socket_write($msgsock,$talkback,strlen($talkback));
- echo"$buf\n";
- }while(true);
- socket_close($msgsock);
- }while(true);
- socket_close($sock);
- ?>
二、client.php客户端:
- <?php
- error_reporting(E_ALL);
- //端口111
- $service_port= 111;
- //本地
- $address='localhost';
- //创建 TCP/IP socket
- $socket= socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
- if($socket< 0) {
- echo"socket创建失败原因: ". socket_strerror($socket) ."\n";
- }else{
- echo"OK,HE HE.\n";
- }
- $result= socket_connect($socket,$address,$service_port);
- if($result< 0) {
- echo"SOCKET连接失败原因: ($result) ". socket_strerror($result) ."\n";
- }else{
- echo"OK.\n";
- }
- //发送命令
- $in="HEAD / HTTP/1.1\r\n";
- $in.="Connection: Close\r\n\r\n";
- $out='';
- echo"Send Command..........";
- $in="sun\n";
- socket_write($socket,$in,strlen($in));
- echo"OK.\n";
- echo"Reading Backinformatin:\n\n";
- while($out= socket_read($socket, 2048)) {
- echo$out;
- }
- echo"Close socket........";
- socket_close($socket);
- echo"OK,He He.\n\n";
- ?>
这两段代码是简单介绍用PHP实现客户端和服务端的通信
具体操作,在DOS下用PHP命令打开SERVER,处于监听状态..
再打开一个DOS窗口,用PHP命令打开CLIENT,会得到服务端的回应....
Tags: 客户端 实例 端的
相关文章
- ·PHP来控制客户端cache(2013-12-09)
- ·php 获取客户端的ip地址程序代码(2014-07-19)
- ·php获取客户端ip地址(2014-08-16)
- ·php判断客户端是手机设备然后跳转到手机站(2015-04-08)
- ·php如何获取客户端电脑屏幕参数(宽度,高度,分辨率)(2015-04-09)
- ·php判断客户端IP来防止重复提交表单的方法(2015-04-15)
- ·php获取客户端IP及URL的方法示例(2018-07-26)
- ·php语言实现redis的客户端(2018-09-18)
- ·php socket客户端及服务器端应用实例(2021-03-13)
- ·PHP获取客户端真实IP地址的5种情况分析和实现代码(2021-03-17)
- ·PHP实现获取客户端IP并获取IP信息(2021-05-16)
- ·从刷票了解获得客户端IP的方法(2021-06-18)
- ·使用PHP处理数据库数据如何将数据返回客户端并显示当前状态(2021-07-10)
- ·php 用户注册实例代码,适合初学者(2013-12-11)
- ·php 缓冲技术中常用几个实例(2013-12-23)
- ·ajax php用户无刷新登录实例(2013-12-23)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)