文章目录

  • 1.socket是什么?
  • 2.代码:
  • 3.运行结果:

TCP/IP:传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的
UDP:用户数据报协议,是与tcp相对应的协议。他是属于TCP/IP协议的一种

1.socket是什么?

socket是应用层和TCP/IP协议族通信的中间软件抽象层
它是一组接口
在设计模式中,Socket其实就是一个门面模式。是一组接口,把复杂的TCP/IP协议族隐藏在Socket接口后面
对用户来说,一组简单的就口就是全部,让socket去组织数据,以符合指定的协议

2.代码:

server.php

<?phpset_time_limit(0);
$ip = '127.0.0.1';
$port = 8888;//1.初始化socket
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);//创建服务端的socket套接流,net协议为IPv4,protocol协议为TCP//2.端口绑定
if (socket_bind($socket,$ip,$port) == false)/*绑定接收的套接流主机和端口,与客户端相对应*/
{echo "server bind fail:".socket_strerror(socket_last_error());
}//3.对端口进行监听
if (socket_listen($socket,4) == false)
{echo "server listen fail:".socket_strerror(socket_last_error());
}//4.调用accept阻塞,等待客户端连接
do{$accept_resource = socket_accept($socket);/*socket_accept的作用就是接受socket_bind()所绑定的主机发过来的套接流*/if ($accept_resource!==false){//5.接受客户端请求数据$string = socket_read($accept_resource,1024);/*socket_read的作用就是读出socket_accept()的资源并把它转化为字符串*/echo "Receive:".$string.PHP_EOL;if ($string!==false){$return_client = "消息已经接收:".date("Y-m-d H:i:s").PHP_EOL;//6.回应数据发送给客户端socket_write($accept_resource,$return_client,strlen($string));/*socket_write的作用是向socket_create的套接流写入信息,或者向socket_accept的套接流写入信息*/}else{echo "socket_read is fail";}}
}while(true);
socket_close($socket);

client.php

<?php
//初始化一个Socket 创建一个socket套接流
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
//接收套接流的最大超时时间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));
//连接服务端的套接流,这一步就是使客户端与服务器端的套接流建立联系
if (socket_connect($socket,'127.0.0.1',8888) == false)
{echo "connect fail message:".socket_strerror(socket_last_error());
}else{$message = "hello,server";$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());}//读取服务端返回来的套接流信息while ($callback = socket_read($socket,1024)){echo 'server return message is:'.$callback.PHP_EOL;}
}socket_close($socket);

3.运行结果:

php的socket通信相关推荐

  1. python 网络编程之Socket通信案例消息发送与接收

    背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...

  2. C# Socket系列三 socket通信的封包和拆包

    通过系列二 我们已经实现了socket的简单通信 接下来我们测试一下,在时间应用的场景下,我们会快速且大量的传输数据的情况! 1 class Program 2 { 3 static void Mai ...

  3. flex java socket通信

    引用:http://developer.51cto.com/art/201003/189791.htm Java socket通信如何进行相关问题的解答呢?还是需要我们不断的学习,在学习的过程中会遇到 ...

  4. Socket通信之操作系统的字节序和位数

    关于Socket通信过程中字节序 在网络编程里,网络字节序是big-endian的,而大部分的PC的系统都是X86处理器系列,X86采用的是little-endian,所以需要将网络数据流转换成本地数 ...

  5. 1.Socket通信

    本博客部分内容参考教程来自C语言中文网. 进入socket通信首先要了解两个概念,第一:服务器端,第二:客户端.(区别是两者的服务对象不同.服务器端是为客户端服务的,客户端就是为真正的"客户 ...

  6. java iso8583 socket 服务_JAVA客户端amp;服务器的socket通信

    JAVA客户端&服务器的socket通信 socket是两台主机之间的一个连接通道,它可以完成七个基本操作: 发送远程机器 发送数据 接收数据 关闭连接 绑定端口 监听入站数据 再绑定端口上接 ...

  7. 手把手教你 Socket 通信(TCP/IP)

    本文将给出完整 Socket 通信代码,在 eclipse 中亲测有效.在Android Studio中用Java开发也是一样的,只是把代码和控件搭配一下,注册监听就好. 网络上的两个程序通过一个双向 ...

  8. protobuf和socket通信简单实例

    protobuf和socket通信简单实例   protobuf是 Google 公司内部的混合语言数据标准,可以用来定义通信的协议,由于其有序列化和反序列化的操作,减小了存储或通信的数据量,从而达到 ...

  9. [其他]JAVA与C#的Socket通信

    在日常的开发中,不同的传感器支持的开发语言常常是不同的.例如Kinect一般是用C++开发的,Leapmotion用JAVA开发比较多. 去年暑假(17年暑假)做的一个项目是:用Leapmotion捕 ...

  10. Android之Socket通信、List加载更多、Spinner下拉列表

    Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时建立连接通道,当客户端向服 ...

最新文章

  1. ML之sklearn:sklearn.linear_mode中的LogisticRegression函数的简介、使用方法之详细攻略
  2. 巧用css text-indent减小中文标点符号的占位大小
  3. SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享试读版
  4. 【POJ - 1961】Period(KMP,循环节问题)
  5. 前端Http协议缓存初解
  6. 这就是程序员被大厂偏爱的实力!
  7. oracle数据库使用小结
  8. windows cmd命令行查看结束进程
  9. python自动翻译pdf_python pdf一键翻译脚本
  10. Label-Consistent Backdoor Attacks
  11. excel高级筛选怎么用_Excel高级筛选使用
  12. 层板等分衣柜(C++)
  13. Java 循环语句折纸小游戏
  14. InterSystems开发者竞赛:InterSystems IRIS Analytics
  15. guanyongyu2
  16. 计算文本相似度-Word2Vec计算
  17. xd卡数据丢失原因和三种数据恢复方法介绍
  18. python鼠标绘图_python 基于opencv 实现一个鼠标绘图小程序
  19. Tuxera ntfs读写插件工具v2022版本 支持macOS15系统
  20. SRAM cell 详解

热门文章

  1. 思科服务器型号m1414,Cisco UCS M 系列模块化服务器
  2. 不安全的发布 java_如何在没有安全警告的情况下发布Java Web S...
  3. js 获取vue组件html_vue.js中怎么引入组件?
  4. python获取当前网页元素_Python+Selenium练习(三十)- 获取页面元素的href属性
  5. linux获取文件引用计数,linux-2.6内核模块引用计数的实现
  6. android 中的组合控件的设计
  7. pycharm导入自定义模块问题
  8. 【小白学习keras教程】九、keras 使用GPU和Callbacks模型保存
  9. 在 Python 中使用 OpenCV 高斯模糊我这张的丑脸
  10. 四十二、Linux网络管理,软件安装,进程管理总结