PHP SOCKET 技术研究

2016-01-29 15:04 1 1 收藏

PHP SOCKET 技术研究,PHP SOCKET 技术研究

【 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通讯还不是完全稳定。

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

今天我写的客户端要与服务端做两次通讯,我用上面这个方法都写了一个客户端程序,发现当仅仅就一次通讯的时候,也就是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);
 }

}

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

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

延伸阅读
标签: autocad教程
    4.做剖切截断面     做管Ⅰ和管Ⅱ剖切截断面的步骤如下:对管Ⅰ和管Ⅱ求交集,并对其进行分解,分解到仅剩下简单的线为止,此时会看到过F、G两点的相贯曲面,此曲面即为管Ⅰ和管Ⅱ真正的剖切截断面,在此曲面上任取非F、G两点的任意一点P,以备下一步剖切之用,同理可做出管Ⅱ和管Ⅲ的剖切截断面MNS。做好...
标签: PHP
在作者所申请的几个PHP 主页空间中,能够提供mail功能的实在不多,总是调用完mail()函数之后就毫 无下文了。但是电子邮件在网上生活中的作用越来越大作用我不想再说了,但是如果主页空间不支持mail()发送那么怎么办呢?我也想过通过socket来实现邮件 发送,但无奈对用php 进行socket编程不熟悉,再加上发送邮件要用到SMTP...
Powered by lguser@163.net 转摘请保留,呵呵 Server push 前一段时间炒得很热的“推”技术,不过网上大部分都是cgi的资料,偶尔看到一个法国的网站上有这么个介绍,可惜法语看不懂,只能从他的程序中看懂点东西,现整理个例子出来大家学习一下。可以用于聊天室的数据传输、网站上的新闻更新、等等各类更新频繁的页面。当然linuxaid的...
标签: PHP
  PHP聊天室技术 黄国辉 1.前言   上网聊天是时下最流行的交友方式。各大网站推出的聊天室都各具特色。   聊天室主要分为WebChat、BBSChat两种。BBSChat是基于Telnet的Tcp协议,是BBS的附设功能,需要客户端Telnet程序。WebChat则采用浏览器方式,实际上是一个多人共同使用的CGI程序。其基本原理是把每个用户的...
标签: PHP
高级PHP V5 对象研究 本文介绍了PHP V5一些更高级的面向设计的特性。其中包括各种对象类型,它们允许将系统中的组件相互分离,创建可重用、可扩展、可伸缩的代码。 领会暗示  首先介绍一下对象类型和类型提示的优点。一个类定义一种类型。从该类实例化的任何对象属于该类定义的类型。所以,使用 Car&nb...

经验教程

367

收藏

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