1.在目录/Library/WebServer/Documents/socket下建两个文件client_socket.php 和server_socket.php

修改目录权限为chmod 777

client_socket.php

<?php//创建一个socket套接流$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);/****************设置socket连接选项,这两个步骤你可以省略*************///接收套接流的最大超时时间1秒,后面是微秒单位超时时间,设置为零,表示不管它socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));//发送套接流的最大超时时间为6秒socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec" => 6, "usec" => 0));/****************设置socket连接选项,这两个步骤你可以省略*************///连接服务端的套接流,这一步就是使客户端与服务器端的套接流建立联系if(socket_connect($socket,'127.0.0.1',8888) == false){echo 'connect fail massege:'.socket_strerror(socket_last_error());}else{$message = 'l love you lj socket 2018.9.21';//转为GBK编码,处理乱码问题,这要看你的编码情况而定,每个人的编码都不同$message = mb_convert_encoding($message,'GBK','UTF-8');//向服务端写入字符串信息if(socket_write($socket,$message,strlen($message)) == false){echo 'fail to write'.socket_strerror(socket_last_error());}else{echo 'client write success'.PHP_EOL;//读取服务端返回来的套接流信息while($callback = socket_read($socket,1024)){echo 'server return message is:'.PHP_EOL.$callback;}}}socket_close($socket);//工作完毕,关闭套接流

server_socket.php

<?php
//创建服务端的socket套接流,net协议为IPv4,protocol协议为TCP
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);/*绑定接收的套接流主机和端口,与客户端相对应*/if(socket_bind($socket,'127.0.0.1',8888) == false){echo 'server bind fail:'.socket_strerror(socket_last_error());/*这里的127.0.0.1是在本地主机测试,你如果有多台电脑,可以写IP地址*/}//监听套接流if(socket_listen($socket,4)==false){echo 'server listen fail:'.socket_strerror(socket_last_error());}
//让服务器无限获取客户端传过来的信息
do{/*接收客户端传过来的信息*/$accept_resource = socket_accept($socket);/*socket_accept的作用就是接受socket_bind()所绑定的主机发过来的套接流*/if($accept_resource !== false){/*读取客户端传过来的资源,并转化为字符串*/$string = socket_read($accept_resource,1024);/*socket_read的作用就是读出socket_accept()的资源并把它转化为字符串*/echo 'server receive is :'.$string.PHP_EOL;//PHP_EOL为php的换行预定义常量if($string != false){$return_client = 'server receive is : '.$string.PHP_EOL;/*向socket_accept的套接流写入信息,也就是回馈信息给socket_bind()所绑定的主机客户端*/socket_write($accept_resource,$return_client,strlen($return_client));/*socket_write的作用是向socket_create的套接流写入信息,或者向socket_accept的套接流写入信息*/}else{echo 'socket_read is fail';}/*socket_close的作用是关闭socket_create()或者socket_accept()所建立的套接流*/socket_close($accept_resource);}
}while(true);
socket_close($socket);

2.测试的时候 需要先开始apahce

mac下开启apache的方法

sudo -i 输入密码 切换为root用户操作

apachectl start

在终端先打开server_socket服务

cd /Library/WebServer/Documents/socket

php server_socket.php

保持一直开着服务端

接着在浏览器开启client_socket.php

http://localhost/socket/client_socket.php

如果关闭服务端,再去连接客户端的话,会报错

mac 环境下搭建socket通信相关推荐

  1. 如何在Mac环境下搭建svn服务器端环境

    为什么80%的码农都做不了架构师?>>>    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功 ...

  2. java socket tomcat_在Tomcat环境下使用socket通信

    最近在做一个APP的服务器端,但是APP和服务器端使用的是HTTP的通信协议,而另一方与服务器端通信却使用的是自定义的通信协议.具体的系统拓扑如下: 为了完成以上的需求,一般的解决方案有两种: 自己实 ...

  3. mac环境下搭建frida环境并连接网易mumu模拟器

    一. frida概述 frida是基于Hook的动态分析工具.是一款基于 python+javascript 的 hook 框架,核心是用C编写的,可运行在 android.ios.linux.win ...

  4. mac环境下搭建hexo+github pages+next个人博客

    GitHub Pages Github Pages 是面向用户.组织和项目开放的公共静态页面搭建托管服务,站点可以免费托管在Github上,你可选择试用Github Pages默认提供的域名githu ...

  5. Mac环境下svn的使用

    CHENYILONG Blog Mac环境下svn的使用 Mac环境下svn的使用 在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的 ...

  6. Mac环境下SVN实战

    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...

  7. Ionic制作Hybrid App系列一:Mac环境下Ionic的搭建

    最近公司项目要做app.由于开发时间较短,并且要出web,android和ios三个版本,经过考虑后决定尝试用Hybrid App的开发方式.说到Hybrid App(混合应用),什么是混合应用? 混 ...

  8. 在Windows环境下搭建Android开发环境

    标题:在Windows环境下搭建 Android 开发环境 作者:CrazyPebble 时间:2011年2月28日 声明:此文在参考其他网上资料以及笔者实践总结写下,一来自己可以做一些总结,二来给跟 ...

  9. 离线/内网环境下搭建vue开发环境

    系列文章目录 第一讲 离线/内网环境下搭建vue开发环境 第二讲 内网环境运行maven项目 目录 外网环境搭建 一.安装nodeJS 二.安装vue依赖包 内网环境正式开始 准备工作: 一.安装no ...

  10. MAC环境下Nessus的安装与使用

    MAC环境下Nessus的安装与使用 一.Nessus简介 Nessus是目前全世界最多人使用的系统漏洞扫描与分析软件.总共有超过75,000个机构使用Nessus作为扫描该机构电脑系统的软件. 二. ...

最新文章

  1. linux中的du 命令详解
  2. 微博超话签到小工具v2.0 签到管理操作
  3. [Ajax] jQuery中的Ajax -- 03-搜索框提示效果
  4. 今天遇到个超郁闷的问题
  5. 服务器系统是指什么,服务器操作系统指的是什么
  6. NetBeans 时事通讯(刊号 # 108 - Jul 08, 2010)
  7. hex(base16)、base32、base64三种编码方式区别
  8. 如何书写批处理文件?(批处理文件的介绍及编写规范)
  9. python代码提取图片文字
  10. 玩转华为ENSP模拟器系列 | 配置设备使用SNMPv2c与网管通信示例
  11. 软件测试就业前景怎样
  12. mysql保存微信昵称特殊字符
  13. Java中基本数据类型和包装类型的区别
  14. 轴功率测试软件,船用轴功率检测仪 在线轴功率测量装置
  15. F:\ 上的回收站已损坏。是否清空该驱动器上的“回收站“?
  16. 【论文阅读】D19-1435——GEC问题解决的一种方法:PIE架构
  17. 数据库原理及应用实验报告-实验10-触发器
  18. RoBERTa:一种稳健优化BERT的预训练方法
  19. opencv学习—简单车牌识别操作(python)
  20. “双碳”目标下资源环境中的可计算一般均衡(CGE)模型实践技术

热门文章

  1. H桥——电机控制电路
  2. 基于QT和DCMTK的Dicom 图像浏览器---收尾二
  3. 单片机音频谱曲软件_单片机音乐代码转换工具(Music Encode)
  4. 索爱小蜜蜂扩音器怎么样啊~
  5. 强大的 Apipost 要取代 Postman 了吗?
  6. 将dBm转换为W的方法
  7. 计算机中英文打字文章,中英文打字练习文章优美范文.doc
  8. win10网卡驱动问题
  9. Mugeda(木疙瘩)H5案例课—教你做魔性H5弹幕-岑远科-专题视频课程
  10. python 进制转换