`
王之子
  • 浏览: 110346 次
  • 性别: 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  屏蔽了底层的协议,使得网络服务之间的互联互通变得简单。

 

分享到:
评论

相关推荐

    Socket函数参考

    在PHP中,Socket函数提供了一种低级别的接口,允许开发者直接操作网络协议,如TCP/IP或UDP。 `socket_create()`函数用于创建一个socket资源,它需要三个参数:地址族(AF_INET代表IPv4,AF_INET6代表IPv6),套接字...

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

    总之,掌握这些socket函数是进行网络编程和网络应用开发的基础,它们提供了丰富的接口来实现客户端与服务器之间的数据传输、处理和状态监控。通过这些函数的组合使用,可以构建出稳定、高效的网络通信模块,为各种...

    php socket简单实现源码

    在IT行业中,PHP Socket是一种强大的通信工具,它允许PHP应用程序与其他服务器进行低级网络通信。本文将深入探讨PHP Socket的工作原理、实现流程以及如何通过PHP编写简单的Socket程序。 首先,理解PHP Socket的基本...

    php_socket基础编程

    - **Socket 的创建**:在 PHP 中,可以使用 `socket_create()` 函数来创建一个 Socket。 ##### 创建 Socket - **函数调用**: ```php $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname("tcp")); ...

    PHP版SOCKET模拟提交POST消息(源码)

    在PHP中,我们可以使用`socket_create()`函数创建一个SOCKET连接,然后通过`socket_connect()`与指定的服务器建立连接。在POST请求中,我们需要向服务器发送带有数据的HTTP头和数据体。 POST请求的构建通常包括以下...

    php socket编程实例详解

    本文将通过一个具体的Server和Client通信实例来详细解析PHP中的Socket编程。 ### 1. 基础概念 Socket是操作系统提供的一个接口,用于在网络环境中实现进程间通信(IPC)。在TCP/IP协议栈中,Socket用于在不同主机...

    用php的socket跟flash的socket通信

    在本文档中,PHP 的 Socket 编程主要用于实现与 Flash 的 Socket 进行通信。PHP 的 Socket 编程相对较少被提及,但仍然是一种非常实用的技术。 - **创建 Socket**: - `socket_create` 函数用于创建一个新的 ...

    php socket聊天室

    在PHP中,我们可以使用`socket_create()`函数创建一个Socket,然后使用`socket_bind()`将其绑定到特定的IP地址和端口号,接着通过`socket_listen()`开始监听连接。一旦有客户端请求连接,我们可以用`socket_accept()...

    用php实现socket

    在PHP中实现Socket通信,我们可以创建服务器(Server)和客户端(Client)来完成进程间的交互。下面将详细介绍如何用PHP实现Socket以及相关的知识点。 1. **PHP Socket基本概念** PHP中的Socket功能是通过`socket`...

    PHP socket 构造POST与GET

    在PHP编程中,Socket是一种低级别的、原始的网络通信接口,允许程序员进行进程间网络通信。Socket主要用于在不同机器之间创建TCP/IP连接,是互联网应用的基础。本篇将深入探讨如何利用PHP的Socket功能来构造POST和...

    PHP和SOCKET

    在PHP中,使用Socket编程非常直观,主要通过一系列函数来完成。下面是一些常用的函数及其功能介绍: - **socket_create()**:创建一个Socket。该函数接受三个参数:地址家族、Socket类型以及协议常量。 ```php $...

    php的socket发送post请求示例

    在PHP编程中,Socket是一种低级别的网络通信接口,它允许程序直接通过TCP/IP协议与服务器进行数据交换。本文将深入探讨如何使用PHP的Socket功能来发送POST请求,并提供一个具体的示例。 首先,理解POST请求的基本...

    简单的php —— socket 编程

    在PHP中,我们可以使用`socket_create()`函数创建一个socket,然后使用`socket_connect()`来连接到指定的服务器。 以下是一些关于PHP socket编程的关键知识点: 1. **创建socket**: 使用`socket_create()`函数...

    运行php socket

    在PHP中,通过socket函数族,开发者可以创建、连接、发送和接收数据,实现客户端与服务器之间的双向通信。 **二、PHP Socket的用途** 1. **创建Web服务**:你可以用PHP Socket创建自定义的Web服务,这些服务可能不...

    PHP的Socket通信

    ### PHP的Socket通信 #### Socket概念 Socket,通常被称为“套接字”,是计算机网络通信中的一个重要组成部分。...通过使用PHP等语言中的Socket函数,开发者能够轻松地构建出高效稳定的网络应用。

    socket-php文件分段上传

    在PHP中,我们可以使用`socket_create`函数创建一个Socket,然后通过`socket_connect`连接到服务器端的Socket。 在文件分段上传的场景下,客户端(通常是用户浏览器)会先选择要上传的文件,然后利用HTML5的File ...

    Php_Socket基础

    在 PHP 中,`socket_create()` 函数用于创建一个 Socket,其原型为: ```php Resource socket_create(int $domain, int $type, int $protocol) ``` 如果创建成功,此函数将返回一个资源类型的 Socket 对象,否则...

    php.rar_php_php socket_php.rar

    PHP Socket API提供了socket_create、socket_connect、socket_write、socket_read等函数,用于创建套接字、连接到远程服务器、发送和接收数据。 4. PHP Socket应用: - Web服务器通信:通过PHP Socket,可以实现...

    PHP利用AJAX实现SOCKET通讯

    在PHP中,我们可以使用`socket_create`函数创建一个SOCKET,然后通过`socket_bind`绑定到特定的IP地址和端口,接着`socket_listen`监听连接请求。一旦有客户端连接,`socket_accept`可以接受这个连接并进行通信。 #...

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

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

Global site tag (gtag.js) - Google Analytics