PHP-PHPsocket通信

UI设计界面 UI设计界面 主题:1059 回复:2190

PHP-PHPsocket通信

灵芸 发布于 2017-08-18 字数 209 浏览 962 回复 1

现在的业务是要实现某个功能,服务端用的是C,我们客户端用的是PHP,现在要按照服务器定义的协议进行通信,进行数据传送;服务端开发人员给了一个协议定义的C语言结构体来参考。请问PHP怎么按照自定义的协议进行通信?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

甜柠檬 2017-08-30 1 楼

<?php
/**

  • Socket客户端

  • @author 七泽

  • */
    class SampleSocketClient{
    private $socket;

    public function __construct($address,$port){
    //此处是使用的TCP协议,如果想使用UDP协议请参考PHP手册,关于socket的内容
    $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die ("socket create failed");
    socket_connect($this->socket,$address, $port) or die ("socket connect failed");
    }

    /**

    • 接收数据
    • 参数output决定是否即时输出
    • @param boolean $output
    • @return string|boolean
      */
      public function recive($output = false){
      if(!socket_last_error($this->socket)){
      $reciveData = '';
      while($buffer = socket_read($this->socket, 1024, PHP_BINARY_READ ))
      {
      if($output){
      print $buffer;
      }else{
      $reciveData.=$buffer;
      }
      }
      return $reciveData;
      }else{
      return false;
      }
      }
      /**
    • 发送数据
    • 参数checkRecive用来决定是否检查返回值
    • @param string $msg
    • @param boolean $checkRecive
    • @return boolean
      */
      public function send($msg,$checkRecive = true){
      if(!socket_write($this->socket, $msg))
      {
      return false;
      }
      if($checkRecive)
      return $this->recive();
      }

    public function close(){
    socket_close($this->socket);
    }
    }

//使用

//$socket = new SampleSocketClient("127.0.0.1", "8282");
//$socket->send("some data");