phpsocket技术研究

北极熊丶丶丶

北极熊丶丶丶

2016-01-29 13:38

phpsocket技术研究,phpsocket技术研究

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

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

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

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

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/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);
 }

}

展开更多 50%)
分享

猜你喜欢

phpsocket技术研究

PHP
phpsocket技术研究

PHP SOCKET 技术研究

PHP
PHP SOCKET 技术研究

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

CSS的滑动门技术研究

Web开发
CSS的滑动门技术研究

PHP 5.0 中的对象重载技术研究

PHP
PHP 5.0 中的对象重载技术研究

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

CSS中的滑动门技术研究

Web开发
CSS中的滑动门技术研究

基于PDM系统的CAD集成技术研究

autocad教程
基于PDM系统的CAD集成技术研究

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

C#中对注册表的操作

C#中对注册表的操作

Flash 交互打字效果(2)

Flash 交互打字效果(2)
下拉加载更多内容 ↓