仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2030|回复: 19
打印 上一主题 下一主题

[学习教程] PHP编程:PHP SOCKET 手艺研讨

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:19:38 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
PHP和HTML混合编程应该不成问题,在这期间,你完全可以让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);
}
}
  我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 16:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表