PHP SOCKET 技术研究_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

////////////////////////////// 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);
 }

}

时间: 2024-11-05 18:50:17

PHP SOCKET 技术研究_php基础的相关文章

用Socket发送电子邮件_php基础

用Socket发送电子邮件 在作者所申请的几个PHP 主页空间中,能够提供mail功能的实在不多,总是调用完mail()函数之后就毫 无下文了.但是电子邮件在网上生活中的作用越来越大.想一想网虫上网不收邮件能叫真正的网虫吗?邮件 的作用我不想再说了,但是如果主页空间不支持mail()发送那么怎么办呢?我也想过通过socket来实现邮件 发送,但无奈对用php 进行socket编程不熟悉,再加上发送邮件要用到SMTP协议,又要读不少的英文了,所 以一直也没有去研究过.终于有一天我发现了一篇文章,关

PHP SOCKET 技术研究

今天试着写一个 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 应用程序安全防范技术研究_php技巧

PHP安全防范程序模型 复制代码 代码如下: /* PHP防注入跨站V1.0 在您的页面顶部添加: require("menzhi_injection.php"); 即可实现通用防止SQL注入,以及XSS跨站漏洞. ##################缺陷以及改进################## 程序还有很多缺陷,希望大家能帮助改进 ##################参考以及鸣谢################## Neeao'ASP SQL通用防注入程序 V3.0 部分代码参考

Partysip的插件技术研究

Partysip的插件技术研究之Partysip框架优化方案   介绍:        本文是<Partysip框架优化计划>的一部分,着重研究Partysip插件技术,并在此基础上尝试优化.        整体上说Partysip虽然没有使用OO的思想去设计,但是还是尽量"封装"独立的函数操作,所以研究和理解还是比较方便,对于每个声明结构体都会有一组相关的函数对其操作,这些操作大部分是名字上的差异,其执行操作是对结构体内变量赋值,修改操作,以及结构体的init和free操

云制造环境下的软件资源服务化封装技术研究

云制造环境下的软件资源服务化封装技术研究 北京交通大学 唐红 主要成果如下:(1)提出了以软件资源为主体的软件资源体系结构框架.在云制造环境下,云制造资源包括制造硬资源和软资源,而软件资源是软资源中模型.数据.知识建立与传递的基础工具,是产品设计工作的基础.本文以设计阶段的软件资源为具体的研究对象,建立了以软件资源为主体的软件资源体系结构框架.(2)建立了软件资源的三维数据模型.依据软件资源的粒度划分,分别从软件资源的分类信息.资源对象信息和属性信息三个方面,建立了软件资源的三维数据模型.基于软

云制造的体系结构及平台实现技术研究

云制造的体系结构及平台实现技术研究 重庆大学   马刚 本文针对开放式云制造系统的动态性和灵活性,采用服务组件技术,研究了一种新的面向服务的.组件化的云制造体系结构及其平台的实现技术.主要研究内容包括:①分析云制造系统特征及其设计原则,研究提出一种基于组件的云制造层次化体系结构.给出了该体系结构的各层业务功能及其层次关系,讨论了云制造系统的核心组件.以及相关标准和规范.②针对云制造任务和资源的多样性.异构性和复杂性,扩展OWL-S服务本体,建立云制造本体模型并给出云制造的任务及服务的形式化描述方

一种基于FPGA云存储架构的关键技术研究

一种基于FPGA云存储架构的关键技术研究 云南大学  陈成 目前常见的云存储服务有:亚马逊的Simple Storage Service(S3).Nutanix的存储服务.搜狐企业网盘.百度云盘等等,而这些并不提供小型开发板所需的云服务.本系统则是以TCP/IP做为基本通信手段,并且加入自定义的数据通信协议,通过整合分布式存储的调度思想,来实现基于FPGA的云存储架构.这样不仅使FPGA开发板能够实现云存储的功能,同时也为基于FPGA的云计算打下了坚实的基础. 本系统利用集群以及分布式的思想,将

中国工程院院士李伯虎:面向智慧制造云的仿真与超算技术研究与思考

2017年6月14日,由中国电子学会主办.至顶网等协办的第九届中国云计算大会在北京国家会议中心正式拉开帷幕.本届大会围绕"生态构建 深化应用"主题展开,并受到云计算大数据领域院士.专家.产业高管.技术大咖以及其他各界人士的广泛关注.支持和参与. 中国工程院院士.中国电子学会云计算专委会副主任委员.中国大数据专家委员会顾问 李伯虎 14日上午,中国工程院院士.中国电子学会云计算专委会副主任委员.中国大数据专家委员会顾问李伯虎出席了本届大会,并进行了主题为<面向智慧制造云的仿真与超算

满江红开放技术研究组织 Seam 2.0 参考手册中文翻译人员招募

满江红开放技术研究组织 Seam 2.0 参考手册中文翻译人员招募  JBoss在EJB3规范制定的过程中获得了很大的胜利,随后,如何利用这个有利位置扩展JBoss的优势成了最大的问题. 而Seam是基于JavaEE5平台­的全功能框架,目的是在标准化的基础上大大简化应用程序开发. 它具有极大的野心:JBoss近年来连续收购的Hibernate.Drools.JBPM. Ex­adel等,都成了Seam的有机组成部分.换句话说,假设你以前使用其中的某几个开源类库,你仍然需要把它们集成到你自己的基