当前位置:湖南快乐十分走势图>文章>PHP

php 基于socket的基本通信

php 基于socket的基本通信

1、前言

湖南快乐十分走势图 www.eh3l1.cn Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

这种介绍度娘很多,希望了解更多的自行百度,往下看的朋友记得先开启socket扩展;

2、创建socke服务器端

基本步骤:

  • 初始化86socket

  • 端口绑定

  • 端口进行监听

  • 调用accept阻塞

  • 等待客服端连接

3、服务器端代码实现

<?php
echo "****************server*****************\r\n";//设置 IP 和 端口(端口必须保证不被占用,且允许被外部访问)$ip = "127.0.0.1";
$port = 1935;//超时设计set_time_limit(0);//创建socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("创建socket失败,原因为:{socket_strerror($socket)}\r\n");//绑定socket到指定ip和端口$ret = socket_bind($socket, $ip, $port) or die("绑定socket失败,原因为:{socket_strerror($ret)}\r\n");//监听socket,最大等会数为4$ret = socket_listen($socket, 4) or die("监听socket失败,原因为:{socket_strerror($ret)}\r\n");//计数$count = 0;
echo "等待连接!!!\r\n";do {    //收到请求连接    //调用子socket处理信息
    $msgsock = socket_accept($socket);    if(!$msgsock){
        echo "socket阻塞失败,原因为:{socket_strerror($msgsock)}\r\n";
    }
    $msg = "<p style='color:red'>连接成功</p>";    //处理客服端输入并返回数据    socket_write($msgsock, $msg, strlen($msg));
    $buf = socket_read($msgsock, 8192);
    $talkback = "收到的信息为:{$buf}\r\n";
    echo $talkback;    if(++$count > 5) {        break;
    }
    socket_close($msgsock);
} while(true);

socket_close($socket);

4、创建slient客户端

基本步骤:

  • 使用TCP协议创建一个socket资源

  • 连接socket服务器

  • socket_write 传输数据

  • socket_read 接收数据

  • 关闭socket资源

5、客户端代码实现


<?php
echo '****************client*****************<br/>';//设置 IP 和 端口 $port = 1935;
$ip = '127.0.0.1';//超时设计set_time_limit(0);//创建TCP协议的socket资源$socket  = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die('socket_create 失败:'.socket_strerror($socket));
echo '创建成功<br/>';
$restult = socket_connect($socket, $ip, $port);
echo '连接成功<br/>';

$in = '创建一个sokcet客服端成功,随机编号='.rand(1000,9999);if(socket_write($socket, $in, strlen($in))) {
    echo '发送成功,发送信息为'.$in.'<br/>';
} else {
    echo '发送失败,原因为'.$socket_strerror($socket).'<br/>';
}while($out = socket_read($socket, 8192)) {
    echo '接收信息成功,信息为'.$out.'<br/>';
}

echo 'socket关闭<br/>';
socket_close($socket);
echo '关闭完成<br/>';

6、开启客服端

7、使用客户端连接服务端

服务端状态:

到这里socket的基本连接就差不多了。

8、相关行数介绍

8.1、socket_create

用于创建一个socket资源,成功返回一个套接字,失败返回false;

详情参考://www.php.net/manual/zh/function.socket-create.php

8.2、socket_bind

绑定一个名称到socket,成功返回true,失败返回时false;

详情参考://php.net/manual/en/function.socket-bind.php

8.3、socket_listen

监听一个socket资源,成功返回true,失败返回时false;

详情参考://php.net/manual/zh/function.socket-listen.php

、

8.4、socket_accept

合法创建一个子socket,成功返回一个新的socket资源,失败返回false;

详情参考://www.php.net/manual/en/function.socket-accept.php

8.5、socket_read

读取客服端发送的信息,成功返回读取的信息,否则返回空字符串

socket_read() returns a zero length string ("") when there is no more data to read.)

详情参考://www.php.net/manual/en/function.socket-read.php

8.6、socket_write

想socket写入数据到缓存

详情参考://php.net/manual/en/function.socket-write.php

8.7、socket_close

关闭socket资源

详情参考://php.net/manual/zh/function.socket-close.php

8.8、socket_strerror

获取错误信息

详情参考://php.net/manual/zh/function.socket-strerror.php

相关阅读:

  • 又帅又萌!来看90后洋女婿的跨国情缘 2019-06-21
  • 法国红酒法国拉菲珍藏波尔多法定产区红葡萄酒(ASC正品行货)【价格 品牌 图片 评论】 2019-06-18
  • 刘延东:把孔子学院办成中南人民心灵的“彩虹桥” 2019-06-18
  • 深圳晚报总编辑丁时照祝贺人民日报创刊70周年 2019-06-17
  • 《陕西省县域经济社会发展监测考评办法》解读 2019-06-16
  • 只看到“贫穷”而看不到“富裕”,只看到贫富差别而看不到其根源是社会财富被个人占为私有的私有制,都是片面错误的。 2019-06-16
  • 关于对部分载客汽车采取交通管理措施的通告 2019-06-14
  • 端午节赛龙舟!这样的龙舟比赛你见过吗? 2019-06-14
  • 傅抱石《琵琶行诗意》1.035亿元成交 2019-06-13
  • 张雨绮说一克拉以下的钻石是不值钱的 她说的对吗? 2019-06-09
  • 《神奇马戏团》欢乐宣传曲《嗷嗷嗷》上线 燃爆童心萧全 神奇马戏团 2019-05-20
  • 世界杯期间严查酒驾毒驾 江西警察前天又抓了167人 2019-04-26
  • 海印公园北片物业及配套停车场出租项目 2019-04-26
  • 西藏榜书家协会开展“文化带动企业发展”公益活动 2019-04-23
  • V社:Steam中国不锁区 但游戏上线需通过审核 2019-04-21
  • 十三水开挂软件下载 东莞娱乐场所价格 彩吧论坛首页彩票论坛 黑龙江36选7开奖结果查询电话 西甲在线直播观看 广东11选5专家推荐 河北快3网 天空图库六合图库大全 新疆时时彩开奖预测表 河北快3最大遗漏数据 内蒙古时时彩54 青海11选5玩法介绍 时时彩二分彩走势图 排列3跨度表 快乐十分十一选五体彩开奖结果