php代码
<?php /** * 用Socket向DDpush服务器发送消息 * * @author Wang Wenbing<binny_w@qq.com> */ class DDpusher { /* Socket resource */ private $socket = null; /** * 构造函数 * @param string $strHost * @param int $intPort * @throws Exception */ public function __construct($strHost, $intPort = 9999) { $strHost = strval($strHost); $intPort = intval($intPort); if (empty($strHost) || !$intPort) { throw new Exception('Wrong strHost or Wrong intPort'); } elseif (($this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { throw new Exception('Error at socket_create(): ' . socket_strerror(socket_last_error())); } elseif (socket_connect($this->socket, $strHost, $intPort) === false) { throw new Exception('Error at socket_connect(): ' . socket_strerror(socket_last_error())); } } /** * 生成32位的UUID,可以重写此函数 * @param string $strUser * @return string(32) */ private function getUUID($strUser) { $strUser = trim($strUser); return strlen($strUser) ? md5($strUser) : false; } /** * 检查Version和Appid参数 * @param int $intVersion * @param int $intAppid * @return boolen */ private function checkVersionAndAppid($intVersion, $intAppid) { return ($intVersion > 0 && $intVersion < 256 && $intAppid > 0 && $intAppid < 256); } /** * 发送通知 * @param string $strUser * @return boolean $blnRe */ public function push0x10($strUser, $intVersion = 1, $intAppid = 1) { $blnRe = false; $intVersion = intval($intVersion); $intAppid = intval($intAppid); if ($this->checkVersionAndAppid($intVersion, $intAppid) && ($strUUID = $this->getUUID($strUser)) !== false && $this->socket) { $strBin = pack('CCCH32n', $intVersion, $intAppid, 16, $strUUID, 0); socket_write($this->socket, $strBin, strlen($strBin)) && $blnRe = (bindec(socket_read($this->socket, 1)) == 0); } else { throw new Exception('Error at push0x10()'); } return $blnRe; } /** * 发送分类信息 * @param string $strUser * @param string $strHex 16位长的16进制字符 * @param int $intVersion * @param int $intAppid * @return boolen $blnRe */ public function push0x11($strUser, $strHex, $intVersion = 1, $intAppid = 1) { $blnRe = false; $intVersion = intval($intVersion); $intAppid = intval($intAppid); $strHex = trim($strHex); if ($this->checkVersionAndAppid($intVersion, $intAppid) && ($strUUID = $this->getUUID($strUser)) !== false && $this->socket && strlen($strHex) == 16) { $strBin = pack('CCCH32nH16', $intVersion, $intAppid, 17, $strUUID, 8, $strHex); socket_write($this->socket, $strBin, strlen($strBin)) && $blnRe = (bindec(socket_read($this->socket, 1)) == 0); } else { throw new Exception('Error at push0x11()'); } return $blnRe; } /** * 发送500字节以内的字符消息 * @param string $strUser * @param string $strMsg 必须是utf8编码的字符 * @param int $intVersion * @param int $intAppid * @return boolen $blnRe * @throws Exception */ public function push0x20($strUser, $strMsg, $intVersion = 1, $intAppid = 1) { $blnRe = false; $intVersion = intval($intVersion); $intAppid = intval($intAppid); // $strMsg = mb_convert_encoding($strMsg, 'utf8', 'gbk'); $strMsg = trim($strMsg); $intLen = strlen($strMsg); $blnTemp = ($intLen > 0 && $intLen <= 500); if ($this->checkVersionAndAppid($intVersion, $intAppid) && ($strUUID = $this->getUUID($strUser)) !== false && $this->socket && $blnTemp) { $strBin = pack('CCCH32nA' . $intLen, $intVersion, $intAppid, 32, $strUUID, $intLen, $strMsg); socket_write($this->socket, $strBin, strlen($strBin)) && $blnRe = (bindec(socket_read($this->socket, 1)) == 0); } else { throw new Exception('Error at push0x20()'); } return $blnRe; } /** * 断开连接 */ public function __destruct() { if ($this->socket) { socket_close($this->socket); $this->socket = null; } } } /** * 使用Demo */ try { $obj = new DDpusher('172.16.14.7'); $obj->push0x10('user01') && print('通知已发送<br />'); $obj->push0x11('user01', '0000000000000001') && print('分类已发送<br />'); $obj->push0x20('user01', '我爱你DDpush') && print('字符串消息已发送<br />'); } catch (Exception $ex) { echo $ex->getMessage(); }

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SublimeText3 Linux new version
SublimeText3 Linux latest version

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function
