PHP-PHPsocket通信

PHP-PHPsocket通信

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

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

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

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

评论(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");