`
purpen
  • 浏览: 796715 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php socket通信的基础知识

阅读更多

迷人而又让人容易糊涂的套接字(Sockets)。Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器,并在 客户端使用socket进行连接,服务器端将详细的处理信息发送给客户端。
当你看到完整的socket过程,那么你将会在以后的程序开发中使用它。这个服务器是一个能让你连接的HTTP服务器,客户端是一个Web浏览器,这是一 个单一的 客户端/服务器 的关系。

 

Socket 基础

 

PHP使用Berkley的socket库来创建它的连接。你可以知道socket只不过是一个数据结构。你使用这个socket数据结构去开始一个客户端和服务器之间的会话。这个服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的一个端口进行会话。这时,服务器端接受客户端的连接请求,那么就进行一次循环。现在这个客户端就能够发送信息到服务器,服务器也能发送信息给客户端。
产生一个Socket,你需要三个变量:一个协议、一个socket类型和一个公共协议类型 。产生一个socket有三种协议供选择,继续看下面的内容来 获取详细的协议内容。
定义一个公共的协议类型是进行连接一个必不可少的元素。下面的表我们看看有那些公共的协议类型。

表一:协议
名字/常量     描述
AF_INET  这是大多数用来产生socket的协议,使用TCP或UDP来传输 ,用在IPv4的地址
AF_INET6     与上面类似,不过是来用在IPv6的地址
AF_UNIX  本地协议,使用在Unix和Linux 系 统上,它很少使用,一般都是当客户端和服务器在同一台及其上的时候使用
表二:Socket类型
名字/常量     描述
SOCK_STREAM  这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接 。这是一个使用最多的socket类型,这个socket是使用 TCP 来进行传输。
SOCK_DGRAM  这个协议是无连接的、固定长度的传输调用。该协议是不可靠的,使用UDP 来进行它的连接。
SOCK_SEQPACKET  这个协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。
SOCK_RAW  这个socket类型提供单一的网络访问,这个socket类型使用ICMP公共协议。(ping、traceroute使用该协 议)
SOCK_RDM  这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保证数据包的顺序

表三:公共协议
名字/常量     描述
ICMP  互联网控制消息协议,主要使用在网关和主机上,用来检查网络状况和报告错误信息
UDP   用户数据报文协议,它是一个无连接,不可靠的传输协议
TCP    传输控制协议,这是一个使用最多的可靠的公共协议,它能保证数据包能够到达接受者那儿,如果在传输过程中发生错误,那么它将重新发送出错数据包。

现在你知道了产生一个socket的三个元素,那么我们就在php中使用socket_create()函数来产生一个socket。这个 socket_create()函数需要三个参数:一个协议、一个socket类型、一个公共协议。socket_create()函数运行成功返回一个 包含socket的资源类型,如果没有成功则返回false。
Resourece socket_create(int protocol, int socketType, int commonProtocol);

 

Socket函数

 

函数名      描述
socket_accept()    接受一个Socket连接
socket_bind()     把socket绑定在一个IP地址和端口上
socket_clear_error()   清除socket的错误或者最后的错误代码
socket_close()     关闭一个socket资源
socket_connect()    开始一个socket连接
socket_create_listen()   在指定端口打开一个socket监听
socket_create_pair()   产生一对没有区别的socket到一个数组里
socket_create()    产生一个socket,相当于产生一个socket的数据结构
socket_get_option()    获取socket选项
socket_getpeername()   获取远程类似主机的ip地址
socket_getsockname()   获取本地socket的ip地址
socket_iovec_add()    添加一个新的向量到一个分散/聚合的数组
socket_iovec_alloc()   这个函数创建一个能够发送接收读写的iovec数据结构
socket_iovec_delete()   删除一个已经分配的iovec
socket_iovec_fetch()   返回指定的iovec资源的数据
socket_iovec_free()    释放一个iovec资源
socket_iovec_set()    设置iovec的数据新值
socket_last_error()    获取当前socket的最后错误代码
socket_listen()     监听由指定socket的所有连接
socket_read()     读取指定长度的数据
socket_readv()     读取从分散/聚合数组过来的数据
socket_recv()     从socket里结束数据到缓存
socket_recvfrom()    接受数据从指定的socket,如果没有指定则默认当前socket
socket_recvmsg()    从iovec里接受消息
socket_select()     多路选择
socket_send()     这个函数发送数据到已连接的socket
socket_sendmsg()    发送消息到socket
socket_sendto()    发送消息到指定地址的socket
socket_set_block()    在socket里设置为块模式
socket_set_nonblock()   socket里设置为非块模式
socket_set_option()    设置socket选项
socket_shutdown()    这个函数允许你关闭读、写、或者指定的socket
socket_strerror()    返回指定错误号的详细错误
socket_write()     写数据到socket缓存
socket_writev()    写数据到分散/聚合数组

 

以上所有的函数都是PHP中关于socket的,使用这些函数,你必须把你的socket打开,如果你没有打开,请编辑你的php.ini文件,去掉下面这行前面的注释:
extension=php_sockets.dll
如果你无法去掉注释,那么请使用下面的代码来加载扩展库:

 

if(!extension_loaded(‘sockets’))
{
if(strtoupper(substr(PHP_OS, 3)) == “WIN”)
{
dl(‘php_sockets.dll’);
}
else
{
dl(‘sockets.so’);
}
} 

*如果你不知道你的socket是否打开,那么你可以使用phpinfo()函数来确定socket是否打开。你通过查看phpinfo信息了解 socket是否打开。

 

实例详解见:

http://purpen.iteye.com/blog/770712

分享到:
评论

相关推荐

    php5 实现socket 通信

    ### PHP5 实现 Socket 通信知识点详解 #### 一、Socket 概述 在计算机网络中,Socket(套接字)是一种用于网络间进程通信的机制。它为应用程序提供了访问低层传输协议的能力,比如 TCP 和 UDP。在 PHP5 中,Socket...

    用php的socket跟flash的socket通信

    通过这些知识点的学习,开发者可以更好地理解并实现 PHP 与 Flash 之间的 Socket 通信。虽然随着技术的发展,Flash 已经逐渐被替代,但对于历史项目或特殊需求来说,了解这部分知识仍然是非常有价值的。

    php_socket基础编程

    本教程介绍了 PHP Socket 编程的基础知识,包括 Socket 的基本概念、创建 Socket 的方法、绑定 Socket 到地址以及开始监听的过程。通过这些基础知识的学习,初学者可以快速掌握如何使用 PHP 实现 Socket 编程,并为...

    PHP socket 构造POST与GET

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

    socket基础php

    PHP中的Socket编程涉及网络通信的基础知识,包括协议、Socket类型和公共协议的选择。通过`socket_create()`等函数,开发者可以创建、绑定、监听和接受Socket连接,从而实现客户端与服务器的交互。在实际项目中,...

    php.rar_php_php socket_php.rar

    本文将基于提供的压缩包文件“php.rar”及其内容来深入探讨PHP和PHP Socket相关的知识。 1. PHP基础: PHP全称为“PHP:Hypertext Preprocessor”,是一种服务器端的脚本语言,用于生成动态网页内容。它被嵌入到...

    php socket通信简单实现

    在了解了PHP中实现socket通信的基本原理和方法之后,开发者可以基于这些基础知识点,进行更高级的网络编程,例如建立一个复杂的Websocket服务,或者使用socket作为API接口与客户端进行即时通信。此外,还需要注意的...

    PHP的Socket通信之UDP通信实例

    理解并掌握这些知识点,将有助于你利用PHP进行UDP通信的开发,为实时性要求较高的应用提供基础。同时,要记住UDP协议的特点,即无连接、不可靠、无序,这可能在某些场景下带来数据丢失或乱序的风险。

    Ubutu+Linux+Apache +php+Socket 编程

    Socket编程是网络编程的基础,允许不同计算机间的进程通过TCP/IP协议进行通信。在PHP中,可以使用`socket_create()`、`socket_bind()`、`socket_listen()`等函数创建服务器端套接字,`socket_connect()`则用于...

    socket-php文件分段上传(带进度条)(0分资源)

    **PHP Sockets基础知识** PHP Sockets是一种允许PHP程序与网络上的其他程序进行低级别通信的接口。它基于Berkeley Sockets API,提供了创建、监听和连接到套接字的能力。在文件分段上传中,服务器端需要监听一个...

    socket字符串传输

    总的来说,"socket字符串传输"涉及到网络编程基础知识,包括TCP连接的建立与关闭,以及PHP中的Socket API使用。在实际应用中,还需要考虑错误处理、并发连接支持、数据的完整性和安全性等问题,以确保可靠和安全的...

    php Socket例子

    **PHP Socket基础知识** PHP Socket是一种通信协议,它允许程序通过网络进行低级别的数据传输,提供了在不同计算机之间创建网络连接的能力。在PHP中,Socket API是通过PHP的socket扩展实现的,它允许开发者直接操作...

    Socket与WEB服务器进行通信的资料[收集].pdf

    对于Windows平台,WinINet库提供了一种更高级别的接口来处理HTTP事务,它抽象了Socket通信的细节,使得开发更为简单。然而,直接使用Socket编程虽然较为繁琐,但能更好地理解HTTP协议的工作机制,并且跨平台性更强。...

    php socket http

    总结,PHP Socket HTTP涉及了网络编程和HTTP协议的基础知识,通过创建和管理套接字,我们可以建立自定义的HTTP服务器。腾讯的实现可能更注重性能和并发处理,通过各种高级技术优化服务器的稳定性和效率。而文件...

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

    PHP与Socket通信是网络编程中的一项基础技术,它允许PHP脚本程序与远程的Socket服务器建立连接,进行数据的收发操作。在本文中,我们将深入了解PHP如何使用Socket进行数据交互,并详细探讨相关的Socket编程函数。 ...

    基于PHP的socket游戏服务器设计与实现.pdf

    基础层采用高性能的Socket库libevent和ZeroMQ,提供了网络通信和数据存储服务;核心层提供了网络通信和数据存储服务;应用层处理游戏逻辑,不关心底层细节。 该架构的优点是可以快速高效地开发游戏服务器,同时也...

    Java中基于Socket的网络编程.pdf

    本文档主要介绍了Java中基于Socket的网络编程的相关知识点,包括Socket通信的基本原理、创建Socket的基本步骤和构造方法、Java中基于Socket的简单网络编程等,同时还介绍了网站后台设计、PHP技术在网站开发中的应用...

    php-handelrsocket_dl9ro2_V2_php_

    1. **Socket基础知识**:Socket是网络编程的基础,它提供了一种进程间通信机制,使得运行在不同主机上的应用程序可以通过网络进行通信。 2. **socket函数**:如`socket_create()`用于创建一个新的套接字,`socket_...

    C语言中文网socket教程

    标签 "socket" 是关键主题,表明内容将围绕如何使用C语言进行Socket编程展开,可能涉及TCP/IP协议、服务器与客户端交互、数据传输等基础和进阶知识。 压缩包子文件的文件名称列表揭示了具体的学习章节和主题: 1. ...

    基于PHP Socket配置以及实例的详细介绍

    PHP Socket基础知识 **Socket** 是一种用于在不同网络应用之间交换数据的接口,它在传输层(TCP或UDP)上工作。在PHP中,我们可以使用`socket_*`函数系列来创建、绑定、监听、接受和关闭套接字。 ### 2. PHP ...

Global site tag (gtag.js) - Google Analytics