`

phpsocket

    博客分类:
  • php
阅读更多

关于PHP中Socket连接及读写数据超时的问题

实习工作 2010-08-24 17:26:44 阅读199 评论0   字号: 订阅

http://hi.baidu.com/chendezh2/blog/item/5a24112bcfde0af399250a13.html

虽然PHP中对fsockopen()方法有连接socket的超时参数,但是没有类似C中的连接成功后对数据的读写超时参数设置。没关系,PHP中对stream提供了一系列的方法以防止超时
stream_set_blocking( $fp , false )//设置数据流为阻塞模式,以防止数据没读完就退出
如果模式为 false, 给定的 socket 描述符将切换到非块模式, 如果为 true, 则切换到块模式. 这个效果类似于 fgets() 从 socket 读的情况. 在非块模式 fgets() 将会立即返回,而在块模式将等待数据满足要求.
stream_set_timeout( $fp , 10 )//设置超时,应该在成功建立连接之后立即加上此句,后面的参数单位为秒
stream_get_meta_data( $fp )//从封装协议文件指针中取得报头/元数据,返回的是一个数组,其中格式为
Array (
            [stream_type] => tcp_socket
            [mode] => r+
            [unread_bytes] => 0
            [seekable] =>
            [timed_out] =>
            [blocked] => 1
            [eof] =>
         )
其中索引timed_out为超时信息,超时则为true,未超时则为false,我们可以籍由此来判断socket是否超时,需要注意的是此句应该加在每次需要等待的语句之后,比如fwrite(),fread(),并且每读一次,都要判断一次是否超时,而对于一个连接只需一次超时设置stream_set_timeout( $fp , 10 )就可以了
代码:
        $fp = @fsockopen( $ip , $port, $errNo , $errstr, 30 );
        if( !$fp )
        {
            return false;
        }
        else
        {    stream_set_timeout( $fp , 3 ) ;   
            //发送数据
            fwrite( $fp , $packet ) ;
            $status = stream_get_meta_data( $fp ) ;
            //发送数据超时
            if( $status['timed_out'] )
            {
                echo "Write time out" ;
                fclose( $fp );
                return false;
            }
            //读取数据
            $buf = fread( $fp , 16 ) ;
            $status = stream_get_meta_data( $fp ) ;
            //读取数据超时
            if( $status['timed_out'] )
            {
                echo "Read time out" ;
                fclose( $fp );
                return false;
            }
        }
分享到:
评论

相关推荐

    php socket聊天室

    在IT行业中,PHP Socket编程是一种常见且强大的技术,它允许服务器和客户端之间建立低级别的网络通信。本项目“php socket聊天室”显然旨在利用PHP的Socket功能创建一个实时的在线聊天平台,使得用户可以通过Web...

    PHP socket 构造POST与GET

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

    php socket编程实例详解

    **PHP Socket 编程实例详解** 在Web开发中,Socket编程是一种基础且强大的技术,它允许服务器和客户端之间进行低级别的通信。PHP作为一款广泛使用的服务器端脚本语言,也支持Socket编程,使得开发者能够创建高效、...

    php socket client class

    php socket client class 能多次发送信息, 有异常处理。

    运行php socket

    在IT领域,PHP Socket编程是一种常见且强大的技术,它允许PHP程序与服务器进行低级别的通信,比如创建TCP/IP连接、监听网络端口等。本文将深入探讨“运行PHP Socket”这一主题,涵盖其基本概念、用途、实现方法以及...

    php socket简单实现源码

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

    workerman PHP socket 服务器框架

    workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。...

    delphi socket call php socket 例子

    delphi socket call php socket 例子,可根据需要扩展写成聊天室、网站助理类似淘宝助理,有订单提醒。 <?php //确保在连接客户端时不会超时 set_time_limit(0); $port = 10081 ; $ip = '192.168.1.102'; // ...

    php socket code 代码,与文档。

    在IT行业中,PHP Socket编程是一种常见的技术,用于创建网络应用程序,允许服务器和客户端进行低级通信。本资源包包含了相关的代码示例和文档,旨在帮助开发者深入理解和实践PHP Socket编程。 首先,`PHP的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 Socket开发基础

    【PHP Socket开发基础详解】 PHP Socket开发涉及到网络通信的基础,主要使用Berkley的socket库。Socket在PHP中被理解为一个数据结构,用于启动客户端和服务器之间的通信会话。服务器端持续监听特定端口,等待客户端...

    workerman-chat-for-winPHP socket 服务器框架

    workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。...

    php_socket基础编程

    ### PHP Socket 基础编程知识点详解 #### 标题:PHP Socket 基础编程 此标题指的是一本适合初学者了解和学习 PHP Socket 编程的基础指南。 #### 描述:一本有利于刚开始接触 PHP Socket 编程的基础教程。 这本...

    flash php socket 在线聊天

    在构建实时在线聊天系统时,Flash、PHP和Socket技术的结合使用可以实现高效的数据传输和交互。本项目标题“Flash PHP Socket在线聊天”表明我们正在探讨一个基于这些技术的聊天应用。下面将详细阐述这三个关键组件...

    php socket 邮件发送类

    在PHP编程中,Socket通信是一种低级别的网络编程接口,它允许程序直接与网络进行交互,实现客户端和服务器之间的数据传输。在本场景中,我们关注的是如何使用PHP的Socket功能来发送HTML电子邮件。"php socket邮件...

    深入php socket的讲解与实例分析

    在深入PHP Socket的讲解与实例分析中,首先应当了解套接字(Sockets)的基本概念。Sockets是一种网络通信的端点,可被用于客户端和服务器之间的通信。在PHP中,Socket的编程不是非常普及,但其功能强大,可以让...

    socket.IO的PHP版本PHPSocket.IO.zip

    PHPSocket.IO 是 socket.IO 的php版本,基于workerman开发。用于替代socket.IO服务端,方便用PHP开发socket.IO即时通讯应用。 实例代码:use PHPSocketIO\SocketIO; // listen port 2021 for socket.io ...

    【???】php socket cURL

    【标题】:“PHP Socket与cURL详解” 在Web开发中,PHP Socket和cURL是两种常用的网络通信工具,它们在处理HTTP请求、数据传输等方面扮演着重要角色。本篇文章将深入探讨这两种技术,并通过实例来解析它们的工作...

    用php实现socket

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

    PHP Socket Udp实时在线云消费机服务器端源码.rar

    "PHP Socket UDP实时在线云消费机服务器端源码"是一个实例,它展示了如何利用PHP进行UDP协议的网络编程,以实现一个实时的在线云消费机服务器端。下面我们将深入探讨这个主题。 首先,`Socket`是计算机网络编程中的...

Global site tag (gtag.js) - Google Analytics