首页 > 编程语言 >php-socket

php-socket

时间:2022-11-22 11:04:15浏览次数:44  
标签:Socket TCP socket 接字 php 连接 客户端

网络中是如何通信数据传输?

ip+端口+协议

实现网络进程之间的通信,几乎所有的应用程序都是采用socket,“一切皆socket”。

HTTP TCP SOCKET 区别

Http协议:对应于应用层。Http协议是基于TCP链接的。
tcp协议:对应于传输层
ip协议: 对应与网络层

TCP/IP是传输层协议,主要解决数据如何在网络中传输;而Http是应用层协议,主要解决如何包装数据。

Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

Http连接:http连接就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。

socket连接:socket连接及时所谓的长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该链接已释放网络资源。所以当一个socket连接中没有数据的传输,那么为了位置连续的连接需要发送心跳消息,具体心跳消息格式是开发者自己定义的。

什么是socket?

Socket的英文原义是“孔”或“插座”,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。

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

socket连接的3个步骤

  (1)服务器监听:ip+端口号
(2)客户端请求:发出向 服务器 的 ip以及端口连接请求
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求

server.php

$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_bind($socket,'0.0.0.0',6666);
socket_listen($socket);
$sock = socket_accept($socket);
$res = socket_read($sock,2048);
echo $res;
socket_write($sock,'hello client');

client.php

$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_connect($socket,'127.0.0.1',6666);
$msg = 'hlllo server';
socket_write($socket,$msg);
$res = socket_read($socket,2048);

 

标签:Socket,TCP,socket,接字,php,连接,客户端
From: https://blog.51cto.com/u_11635800/5877054

相关文章

  • php 在LINUX下创建目录失败的解决方法
    mkdir(APP_PATH.'tempinfo/getport/'.$config_name,0777,true);创建多级目录时使用参考https://jingyan.baidu.com/article/63acb44ac8ec5861fdc17e4d.html......
  • PHP 新特性 linux安装ssh2
    p7新特性p7新特性http://www.aichengxu.com/view/5446277 已经云http://www.lai18.com/content/2442224.html 已经云p7安装ssh2http://www.mobibrw.com/2016/4049//ssh2最......
  • MacOS12安装Homebrew、PHP8.0
    MacOS12安装HomebrewMacOS12Monterey已经不自带PHP了,所以手动安装PHP首先安装Homebrew在控制台输入以下命令,使用国内源安装,亲测不光速度快,而且自动装一些必要的依赖;并且......
  • php伪协议
        https://www.cnblogs.com/linfangnan/p/13535097.html#:~:text=PHP%20%E4%BC%AA%E5%8D%8F%E8%AE%AE%20%E6%98%AF%20PHP%20%E6%94%AF%E6%8C%81%E7%9A%84%E5%8......
  • 在PHP中,使用函数define()来定义常量 可设置大小号是否敏感等
    在PHP中,使用函数define()来定义常量。其语法如下:1booldefine(stringname,mixedvalue[,boolcase_insensitive]);说明:define函数有3个参数,第一个参数为常量名称,即标......
  • Think php 3.0 判断请求类型,发现也比较好用.
    isGetisPostisPutisDeleteisHead方法是if($this->isGet){samefunction;}还有一个是是否为ajax方法isAjax如果非jquery的话,要在表示加入一个隐藏的名为ajax字段.才可生......
  • 1.企业微信微盘文件通过API接口下载,2.PHP将文件流生成Excel文件
    1、企业微信微盘文件通过API接口下载,//微盘接口需要的值$data['userid']='';//操作者userid$data['fileid']='';//文件fileid$data_json......
  • PHP 之将数组拼接为sql语句
    一、代码/***拼接sql语句*@param$table*@param$array*@returnstring*/functioninsertSql($table,$array){$sqlk='';$sqlv='';foreach($arra......
  • PHP 之正则匹配获取img标签图片地址
    一、代码/***对富文本信息中的数据*匹配出所有的<img>标签的src属性*@paramstring$contentStr富文本字符串*@returnarray*/functiongetPatternMatchImages......
  • PHP 之beast扩展加密源码
    一、安装1、windows安装教程下载地址:​​https://github.com/imaben/php-beast-binaries​​将下载的扩展放入对应php的ext目录修改php.ini添加配置:extension=php_beast_x......