socket 消息队列服务器与php客户端通信

发布于 2021-11-26 02:08:24 字数 3128 浏览 794 评论 7

socket 消息队列服务器与php客户端通信

class Socket {

//消息头
private $head = array();
//消息体
private $body = array();

private static $obj = null;

public function __construct() {
 
}

/**
  * 单例入口
  * @return Socket
  */
public static function getInstance(){
  if(is_null(self::$obj)){
   self::$obj = new Socket();
  }
  return self::$obj;
}

/**
  * 设置消息头信息
  * @param unknown_type $msgid
  * @param unknown_type $uid
  * @param unknown_type $rid
  * @param unknown_type $type
  */
public function setHead($msgid, $uid, $rid, $transmode) {
  $head = array(
    "msgid"=>$msgid,
    "uid"=>$uid,
    "rid"=>$rid,
    "transmode"=>$transmode
  );
  $this->head[] = $head;
}

/**
  * 设置消息包体
  * @param unknown_type $body
  */
public function setBody($body) {
  $this->body[] = $body;
}

/**
  * 构造消息
  */
public function getMsg() {
  $msg = "";
  if (!empty($this->head)) {
   foreach ($this->head as $key => $val) {
    if ($this->body[$key] != "") {
     $arr = array(
      "msghead" => $val,
      "msgbody" => $this->body[$key]
     );
     $msg .= json_encode($arr). "rn";
    }
   }
  }
  return $msg;
}

/**
  * 发送消息
  * @param unknown_type $ip
  * @param unknown_type $port
  */
public function send(){
  $gateway = ConfigHelper::getInstance()->setConfig("config")->getItem("gateway");
  $ip = $gateway[0]['ip'];
  $port = $gateway[0]['port'];
  $msg = $this->getMsg();
  log($msg, "socket");
  if (($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
   log("socket create error");
   exit();
  }
  if (socket_connect($socket, $ip, $port) === false) {
   log("socket connect error.");
   exit();
  }
  if (socket_write($socket,$msg, strlen($msg)) == false) {
   log("socket write error.");
   exit();
  }
  socket_close($socket);
}
}

想用C语言开发服务端 可是我不会求帮写个

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(7

恋你朝朝暮暮 2021-11-28 03:03:02

workerman

野心澎湃 2021-11-28 02:22:52

服务端用php也能开发啊,可以试试workerman,性能不比c的差多少,主要是简单,开发快

眼眸 2021-11-28 01:37:00

代码不是我写的  我不会 socket   我看了他的代码  socket服务端 只负责监听 接收和转发    

緦唸λ蓇 2021-11-27 22:49:15

你是怎么搞的啊?

虐人心 2021-11-27 03:07:49

swoole要装扩展包,而且看的比较辛苦,感情workerman速成比较快

彼岸花ソ最美的依靠 2021-11-26 17:31:09

引用来自“geminiblue”的评论

..不支持长连啊?那还不如curl+nginx来的方便

建议楼主看看这个swoole,服务端也是php写,没有你想的那么复杂。。。

秋意浓 2021-11-26 07:13:19

..不支持长连啊?那还不如curl+nginx来的方便

建议楼主看看这个swoole,服务端也是php写,没有你想的那么复杂。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文