- 浏览: 796715 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
aliang032:
文章很赞,有几个缺点:1、是你的服务端是单进程的,如果进程挂了 ...
php socket编程实例详解 -
最佳蜗牛:
最佳蜗牛 写道是不是缺少了一个toolbar.Realize( ...
wxPython写的简易编辑器(原创) -
最佳蜗牛:
是不是缺少了一个toolbar.Realize()?
wxPython写的简易编辑器(原创) -
最佳蜗牛:
2.7.3版本里不能显示工具栏的图标
wxPython写的简易编辑器(原创) -
sogo6:
我怎么安装的也不行? 裸奔啊。。。。。
让TextMate支持中文显示
迷人而又让人容易糊涂的套接字(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
发表评论
-
基于libmemcached,php扩展memcached的安装
2011-03-29 18:23 1655一,为什么要装memcached扩展 memcached ... -
OpenCV和PHP的人脸识别技术
2011-03-15 00:52 4065OpenCV安装之前必须依赖的包:(请先安装好) pkgco ... -
php代码安全:增加这三行php代码的安全,性能和兼容性
2010-10-09 16:42 1320如何改进以下的这行php代码: <? echo(&q ... -
PHP代码安全:register_globals的设置off
2010-10-09 16:29 1432在PHP编码的时候,要考虑到很多安全问题,不然将可能被攻击。下 ... -
PHP 加速器:APC、eAccelerator、XCache比较
2010-09-29 11:24 2718一直想找一些关于PHP加速的文章,偶然看到杀 客 的这篇文 ... -
PHP APC 配置详解
2010-09-29 10:16 6544APC是Alternative PHP Cache的简称,是 ... -
安装PHP的Parsekit扩展
2010-09-29 09:54 1319安装PHP的Parsekit扩展 从http://pecl. ... -
PHP算法:折半查找法(又称二分查找法)
2010-09-26 13:12 2362二分查找又称折半查找 ,它是一种效率较高的查找方法。 ... -
PHP算法:直接插入排序
2010-09-26 12:56 1370直接插入排序(Straight Insertion Sort) ... -
PHP算法:冒泡排序与快速排序
2010-09-26 12:41 1901写一个排序算法,可以是冒泡排序或者快速排序,假设待排序对象是一 ... -
[转]PHP的错误报告error_reporting
2010-09-25 11:41 1583error_reporting 设定 ... -
PHP正则表达式:将1234567890转换成1,234,567,890 每3位用逗号隔开的形式
2010-09-25 10:52 1713“四项处理”的作用是与字符相匹配,然后根据是否能找到要匹配的字 ... -
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2010-09-25 10:19 4723PHP函数篇详解十进制、二进制、八进制和十六进制互相转 ... -
posix和perl标准的正则表达式区别
2010-09-25 08:29 5573正则表达式(Regular Expre ... -
php socket编程实例详解
2010-09-24 23:10 12633让我们以一个基本的例子开始---一个接收输入字符串,处理并返回 ... -
PHP SPL,遗落的宝石
2010-09-24 22:23 1214英文原文:http://www.rafae ... -
PHPER进阶必备知识:详解SQL性能优化十条经验
2010-09-17 22:02 8591.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ... -
mysql_fetch_array与mysql_fetch_row有什么区别?
2010-09-17 21:54 4055两种查询函数array / row区别 格式:mysql ... -
php 排序函数 sort、rsort、asort、arsort、ksort、krsort的区别
2010-09-17 18:43 34681,快速创建数组的函数range() 比如range()函数 ... -
在smarty模板文件当中,直接使用PHP代码
2010-09-11 23:19 1831smarty允许在模板中直接嵌入 php 脚本. 是否处理这些 ...
相关推荐
### PHP5 实现 Socket 通信知识点详解 #### 一、Socket 概述 在计算机网络中,Socket(套接字)是一种用于网络间进程通信的机制。它为应用程序提供了访问低层传输协议的能力,比如 TCP 和 UDP。在 PHP5 中,Socket...
通过这些知识点的学习,开发者可以更好地理解并实现 PHP 与 Flash 之间的 Socket 通信。虽然随着技术的发展,Flash 已经逐渐被替代,但对于历史项目或特殊需求来说,了解这部分知识仍然是非常有价值的。
本教程介绍了 PHP Socket 编程的基础知识,包括 Socket 的基本概念、创建 Socket 的方法、绑定 Socket 到地址以及开始监听的过程。通过这些基础知识的学习,初学者可以快速掌握如何使用 PHP 实现 Socket 编程,并为...
在PHP编程中,Socket是一种低级别的、原始的网络通信接口,允许程序员进行进程间网络通信。Socket主要用于在不同机器之间创建TCP/IP连接,是互联网应用的基础。本篇将深入探讨如何利用PHP的Socket功能来构造POST和...
PHP中的Socket编程涉及网络通信的基础知识,包括协议、Socket类型和公共协议的选择。通过`socket_create()`等函数,开发者可以创建、绑定、监听和接受Socket连接,从而实现客户端与服务器的交互。在实际项目中,...
本文将基于提供的压缩包文件“php.rar”及其内容来深入探讨PHP和PHP Socket相关的知识。 1. PHP基础: PHP全称为“PHP:Hypertext Preprocessor”,是一种服务器端的脚本语言,用于生成动态网页内容。它被嵌入到...
在了解了PHP中实现socket通信的基本原理和方法之后,开发者可以基于这些基础知识点,进行更高级的网络编程,例如建立一个复杂的Websocket服务,或者使用socket作为API接口与客户端进行即时通信。此外,还需要注意的...
理解并掌握这些知识点,将有助于你利用PHP进行UDP通信的开发,为实时性要求较高的应用提供基础。同时,要记住UDP协议的特点,即无连接、不可靠、无序,这可能在某些场景下带来数据丢失或乱序的风险。
Socket编程是网络编程的基础,允许不同计算机间的进程通过TCP/IP协议进行通信。在PHP中,可以使用`socket_create()`、`socket_bind()`、`socket_listen()`等函数创建服务器端套接字,`socket_connect()`则用于...
**PHP Sockets基础知识** PHP Sockets是一种允许PHP程序与网络上的其他程序进行低级别通信的接口。它基于Berkeley Sockets API,提供了创建、监听和连接到套接字的能力。在文件分段上传中,服务器端需要监听一个...
总的来说,"socket字符串传输"涉及到网络编程基础知识,包括TCP连接的建立与关闭,以及PHP中的Socket API使用。在实际应用中,还需要考虑错误处理、并发连接支持、数据的完整性和安全性等问题,以确保可靠和安全的...
**PHP Socket基础知识** PHP Socket是一种通信协议,它允许程序通过网络进行低级别的数据传输,提供了在不同计算机之间创建网络连接的能力。在PHP中,Socket API是通过PHP的socket扩展实现的,它允许开发者直接操作...
对于Windows平台,WinINet库提供了一种更高级别的接口来处理HTTP事务,它抽象了Socket通信的细节,使得开发更为简单。然而,直接使用Socket编程虽然较为繁琐,但能更好地理解HTTP协议的工作机制,并且跨平台性更强。...
总结,PHP Socket HTTP涉及了网络编程和HTTP协议的基础知识,通过创建和管理套接字,我们可以建立自定义的HTTP服务器。腾讯的实现可能更注重性能和并发处理,通过各种高级技术优化服务器的稳定性和效率。而文件...
PHP与Socket通信是网络编程中的一项基础技术,它允许PHP脚本程序与远程的Socket服务器建立连接,进行数据的收发操作。在本文中,我们将深入了解PHP如何使用Socket进行数据交互,并详细探讨相关的Socket编程函数。 ...
基础层采用高性能的Socket库libevent和ZeroMQ,提供了网络通信和数据存储服务;核心层提供了网络通信和数据存储服务;应用层处理游戏逻辑,不关心底层细节。 该架构的优点是可以快速高效地开发游戏服务器,同时也...
本文档主要介绍了Java中基于Socket的网络编程的相关知识点,包括Socket通信的基本原理、创建Socket的基本步骤和构造方法、Java中基于Socket的简单网络编程等,同时还介绍了网站后台设计、PHP技术在网站开发中的应用...
1. **Socket基础知识**:Socket是网络编程的基础,它提供了一种进程间通信机制,使得运行在不同主机上的应用程序可以通过网络进行通信。 2. **socket函数**:如`socket_create()`用于创建一个新的套接字,`socket_...
标签 "socket" 是关键主题,表明内容将围绕如何使用C语言进行Socket编程展开,可能涉及TCP/IP协议、服务器与客户端交互、数据传输等基础和进阶知识。 压缩包子文件的文件名称列表揭示了具体的学习章节和主题: 1. ...
PHP Socket基础知识 **Socket** 是一种用于在不同网络应用之间交换数据的接口,它在传输层(TCP或UDP)上工作。在PHP中,我们可以使用`socket_*`函数系列来创建、绑定、监听、接受和关闭套接字。 ### 2. PHP ...