phpsocket技术研究

2016-01-29 13:38 0 1 收藏

phpsocket技术研究,phpsocket技术研究

【 tulaoshi.com - PHP 】

今天试着写一个 PHP 与 C 语言通过socket通讯的程序,看过PHP手册,发现有好几种方式可以建立socket 客户端.

1、通过 fsockopen() 建立socket连接,然后用 用fputs() 发送消息,用 fgets() 接收消息。

2、通过 socket_create() 建立 socket 连接,然后用 socket_send() or socket_write() 发送消息,用 socket_recv() or socket_read() 发送消息。
    很奇怪,我在手册上看到了这样一段话"本扩展模块是实验性的。该模块的行为,包括其函数的名称以及其它任何关于此模块的文档可能会在没有通知的情况下随 PHP 以后的发布而改变。我们提醒您在使用本扩展模块的同时自担风险。" 看来 php4.0 socket通讯还不是完全稳定。

今天我写的客户端要与服务端做两次通讯,我用上面这个方法都写了一个客户端程序,发现当仅仅就一次通讯的时候,也就是PHP客户端发送一次消息,然后接收返回消息,就关闭连接。这两种方法都能正确快速的实现功能,但当做两次通讯时,却有明显的差别,第一种方法第一次通讯特别快就结束了,这个我可以通过服务端的输出看出来,但是第二次通讯要等上好几分钟才能结束,我试了好几次都这样,我不太清楚我的程序哪里出错了,还是这个方式连接就是有问题,但是第二种方法做这两次通讯却很快,正确!完成的非常的。

最后我根据 第二种情况写了一个 class

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

////////////////////////////// File Description //////////////////////////////////////////
//  Class Name            : socket
//  Version               : V1.0
//  Functional Outline    : create socket,and send message to server
//  Revision history      : 2004/12/15 First version created
//  Current               : 2004/12/15 Liu Yongsheng
//////////////////////////////////////////////////////////////////////////////////////////
class socket{
 var $socket; //socket 句柄
 var $sendflag = "";
 var $recvflag = "<<<";
 var $response;
 var $debug = 1;
 function socket($hostname,$port){
  $address = gethostbyname($hostname);
  $this-socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
     $result =  socket_connect($this-socket,$address,$port);
  if($this-debug == 1){
   if ($result < 0) {
      echo "socket_connect() failed.nReason: ($result) " . socket_strerror($result) . "<br";
   } else{
      echo "connect OK.<br";
   }
  }  
 }
 function sendmsg($msg){
  socket_write($this-socket,$msg,strlen($msg));
  $result  = socket_read($this-socket,100);
  $this-response = $result;
  if($this-debug == 1){
      printf("<font color=#CCCCCC%s $msg</fon<br",$this-sendflag);
      printf("<font color=blue%s $result</font<br",$this-recvflag);
  }
        return $result;
 }
 function close(){
  socket_close($this-socket);
 }

}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

来源:https://www.tulaoshi.com/n/20160129/1490947.html

延伸阅读
标签: autocad教程
    4.做剖切截断面     做管Ⅰ和管Ⅱ剖切截断面的步骤如下:对管Ⅰ和管Ⅱ求交集,并对其进行分解,分解到仅剩下简单的线为止,此时会看到过F、G两点的相贯曲面,此曲面即为管Ⅰ和管Ⅱ真正的剖切截断面,在此曲面上任取非F、G两点的任意一点P,以备下一步剖切之用,同理可做出管Ⅱ和管Ⅲ的剖切截断面MNS。做好...
标签: Web开发
现在提起AJAX,大家都立刻会想起Gmail、google map这几个经典的AJAX应用。Gmail的优良表现我们都看过了,那么它的实现你研究过了吗?它怎么在几个不同的浏览器上可以一致的实现xml异步调用的呢?一起来看看吧。 首先,登录gmail以后我们会先进入这个页面: <html> <head> <meta content="text/html; charset=UTF-8" http-eq...
标签: SQLServer
摘要 数据加密是SQL Server 2005新增的数据安全特性,这对应用程序开发者来说是非常重要的改进。本文从程序开发者角度,探讨SQL Server 2005数据加密特性以及如何运用该特性保证系统的数据安全。 关键词 SQL Server 2005、数据加密、数据安全 SQL Server 2005是微软开始实施其“可信赖计算” 计划以来的第一个主要的产品,它提供了丰富...
标签: Web开发
XML(可扩展标记语言)已成为Web应用中数据表示和数据交换的标准,随着Internet的快速发展,尤其是电子商务,Web服务等应用的广泛使用,XML类型的数据成为当前主流的数据形式。因此XML数据的管理技术尤其是XML数据查询技术成为当前的研究热点。 相比起关系型数据,XML有着各种各样的优点,但有个最大的缺陷就是它的效率。因为关系型数据文件中,数...
标签: autocad教程
关键字: AutoCAD 2009 Photoshop手绘 AutoCAD对象 中望CAD AutoCAD三维造型概述了3DXML文件的体系结构和两种构建方法。结合达索3D VIA Virtools集成开发平台,论述了基于3D XML文件的Web 3D虚拟现实应用的开发流程以及3D XML文件在达索PLM(产品全生命周期)解决方案中的地位和作用。 1、引言 Web 3D技术是一种将多媒体技术、...

经验教程

963

收藏

100

精华推荐

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部