`
王之子
  • 浏览: 105628 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PHP 中的 Socket 函数

 
阅读更多

Socket 就是一种通信机制,类似于银行、电信这些部门的电话客服部门。打电话时,对方会分配一个坐席代表回答你的问题,客服部门就相当于 Socket 的服务器端,你就相当于客户端。在通话结束前,如果有人想找到和你通话的坐席代表是不可能的,因为你们正在通信,客服部门的电话交换机也不会重复分配。

 

Socket 函数的原型定义如下:

 

SOCKET socket( int af, int type, int protocol);

 

Socket 函数的原型定义如下:

 

af:指定应用程序使用的通信协议的协议族,对于 TCP/IP 协议族该参数置 AF_INET,对于 NUIX 可建立本地 Socket 。

 

type:指定创建的 Socket 类型。有三种可选项。

 

流套接字类型(SOCK_STREAM):最常见类型,基于 TCP 协议。

数据报套接字类型(SOCK_DGRAM):即 UDP 数据报。

原始套接字类型(SOCK_RAW):在 IP 层对套接字进行编程,实际上就是在 IP 层够造自己的 IP 包,然后把这个 IP 包发送出去。

 

protocol:指定应用程序所使用的通信协议。最常用的是 TCP 协议与 UDP 协议。

 

同样,可以把从 TCP/UDP 传输层过来的包抓取过来并进行分析。流套接字和数据报套接字不能完成的任务,可以在原始套接字中得以实现。所有语言提供的 Socket API 都是按照这个原型设计的。

 

提示:Socket 从传输模式上又分为端对端和点对点的连接,流套接字和数据报套接字都属于端对端的连接,因此需要绑定端口号。而原始套接字是基于 IP 协议的,属于点对点的传输模式,是没有端口这个概念的。比如常用的监测网络连接 ping 命令,就是基于 ICMP 协议的,它不存在端口概念。

 

PHP 创建 Socket

 

<?php
$host = '192.168.2.14';
$port = 11109;
set_time_limit(0); //最好在 CLI 模式下运行,保证服务不会超时
//创建 Socket
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die("Could not create socket\n");
//绑定 Socket 到指定地址和端口
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
//开始监听连接
$result = socket_listen($socket,3) or die("Could not set up socket listener\n");
//接收连接请求并调用另一个子 Socket 处理客户端——服务器间的信息
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
//读取客户端输入
$input = socket_read($spawn,1024) or die("Could not read input\n");
//clean up input string
$input = trim($input);
//反转客户端输入数据,返回服务端
$output = strrev($input)."\n";
socket_write($spawn,$output,strlen($output)) or die("Could not write output\n");
//关闭 sockets
socket_close($spawn);
socket_close($socket);
?>

 

PHP 的语言特性和自身定位决定了它只适合做客户端,而不适合做服务器端。因为 Socket  主要面向底层和网络服务开发,一般服务器端都是用 C、Java 等语言实现,这样能更好地操纵底层,对网络服务开发中遇到的问题(如并发、阻塞等)也有完善、成熟的解决方案,而 PHP 显然不适合这种应用场景。

 

实际上,PHP 操作 MySQL 数据库也是通过 Socket  进行的,这正是由于 Socket  屏蔽了底层的协议,使得网络服务之间的互联互通变得简单。

 

分享到:
评论

相关推荐

    php中关于socket的系列函数总结

    主要介绍了php中关于socket的系列函数总结,本文列举了所有关于PHP语言中使用socket相关服务的一些函数,需要的朋友可以参考下

    即用即查PHP函数参考手册.part2.rar

    第十三章 Socket函数 第十四章 SNMP函数 第十五章 Session函数 第十六章 URL函数 第十七章 Mail函数 第十八章 HTTP函数 第十九章 FTP函数 第二十章 Network函数 第六篇 图象处理篇 第二十一章 Exif函数 第二十二章 ...

    PHP函数参考手册大全

    17. 函数 18. 类与对象(PHP 4) 19. 类与对象(PHP 5) 20. 异常处理 21. 引用的解释 IV. 安全 22. 简介 23. 总则 24. 以 CGI 模式安装时 25. 以 Apache 模块安装时 26. 文件系统安全 27. 数据库安全 28. 错误报告 ...

    \即用即查PHP函数参考手册.part4.rar

    第十三章 Socket函数 第十四章 SNMP函数 第十五章 Session函数 第十六章 URL函数 第十七章 Mail函数 第十八章 HTTP函数 第十九章 FTP函数 第二十章 Network函数 第六篇 图象处理篇 第二十一章 Exif函数 第二十二章 ...

    php中Socket创建与监听实现方法

    这里提供了在php中socket相关函数的一个实例,如创建Socket,接受一个socket连接 ,写入一个Socket及初始化连接等操作,具体实例代码如下: 复制代码 代码如下:$ip=”127.0.0.1″; //定义ip地址 $port=1000; //定义...

    PHP中的socket_read和socket_recv区别详解

    主要介绍了PHP中的socket_read和socket_recv区别详解,本文从源码上分析了这两个函数的不同之处,需要的朋友可以参考下

    即用即查PHP函数参考手册.part1.rar

    第十三章 Socket函数 第十四章 SNMP函数 第十五章 Session函数 第十六章 URL函数 第十七章 Mail函数 第十八章 HTTP函数 第十九章 FTP函数 第二十章 Network函数 第六篇 图象处理篇 第二十一章 Exif函数 第二十二章 ...

    即用即查PHP函数参考手册.part3.rar

    第十三章 Socket函数 第十四章 SNMP函数 第十五章 Session函数 第十六章 URL函数 第十七章 Mail函数 第十八章 HTTP函数 第十九章 FTP函数 第二十章 Network函数 第六篇 图象处理篇 第二十一章 Exif函数 第二十二章 ...

    PHP100视频教程 42:PHP通过mail()或Socket发邮件

    1、PHP中发送邮件的方式2、mail函数的使用mail() 函数允许您从脚本中直接发送电子邮件。如果邮件的投递被成功地接收,则返回 true,否则返回 false3、socket方式发送原理使用fsockopen函数打开一个Internet连接这里...

    PHP Stream_*系列函数

    您可能感兴趣的文章:PHP中的流(streams)浅析PHP Streams(流)详细介绍及使用PHP中的Streams详细介绍PHP Wrapper在SAE上的应用方法php常用Stream函数集介绍php stream_get_meta_data返回值PHP stream_contex

    PHP100视频教程 42:PHP通过mail()或Socket发邮件.rar

    软件介绍 1、PHP中发送邮件的方式 2、mail函数的使用 mail() 函数允许您从脚本中直接发送电子邮件。 如果邮件的投递被成功地接收,则返回 true,否则返回 false 3、socket方式发送原理 使用fsockopen函数打开一...

    PHP100视频教程 (四十二、PHP通过mail()或Socket发邮件).rar

    软件介绍 1、PHP中发送邮件的方式 2、mail函数的使用 mail() 函数允许您从脚本中直接发送电子邮件。 如果邮件的投递被成功地接收,则返回 true,否则返回 false 3、socket方式发送原理 使用fsockopen函数打开一...

    基于php socket(fsockopen)的应用实例分析

    fsockopen是对socket客户端代码的封装,该函数中封装了socket_create,socket_connect。服务器端代码:server.php复制代码 代码如下:&lt;?phperror_reporting(E_ALL);set_time_limit(0);$address = ‘127.0.0.1’;$...

    PHP向socket服务器收发数据的方法

    主要介绍了PHP向socket服务器收发数据的方法,分析了socket收发数据的方法,并介绍了socket常用函数,需要的朋友可以参考下

    PHP100视频教程全集112集BT种子【PHP经典】

    PHP100视频教程42:PHP通过mail()或Socket发邮件 PHP100视频教程43:PHP中MVC学习之ThinkPHP(上) PHP100视频教程44:PHP中MVC学习之ThinkPHP(下) PHP100视频教程45:如何用PHP开发一个完整的网站 PHP100视频...

    php实现socket推送技术的示例

    总结下常用的socket函数 服务端: socket_create 创建socket设置基本参数  socket_bind 绑定ip和端口号  socket_listen 监听  socket_accept 客户端的连接  socket_read 读取客户端的数据  socket_write 给单独...

    php中文完全开发手册

    12. 函数 13. 类与对象 14. 引用的解释 III. 安全 15. 安全 IV. 特点 16. 用 PHP 进行 HTTP 认证 17. Cookies 18. 文件上传处理 19. 使用远程文件 20. 连接处理 21. 数据库永久连接 22. 安全模式 23. PHP 的命令行...

    PHP SOCKET编程详解

    1. 预备知识 ...php的socket连接函数 1、集成于内核的socket 这个系列的函数仅仅只能做主动连接无法实现端口监听相关的功能。而且在4.3.0之前所有socket连接只能工作在阻塞模式下。 此系列函数包括 fsockopen

Global site tag (gtag.js) - Google Analytics