tcp

tcp

workerman和C++socket通信发送和接收数据不一样

提问blogdaren 回复了问题 • 2 人关注 • 1 个回复 • 504 次浏览 • 2019-01-04 06:49 • 来自相关话题

can not connect to tcp://127.0.0.1:xxxx Connection timed out in

提问DaXin 回复了问题 • 3 人关注 • 3 个回复 • 650 次浏览 • 2018-11-16 18:00 • 来自相关话题

gateway总是在发送数据给客户端后tcp状态位发送FIN断开连接。

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 760 次浏览 • 2018-06-19 16:33 • 来自相关话题

TCP模式,怎么主动给客户端发消息呢?

提问zhengweipx 回复了问题 • 2 人关注 • 13 个回复 • 2620 次浏览 • 2018-04-11 15:51 • 来自相关话题

[分享]解决 Workerman Tcp 丢包,粘包问题。

分享egirlasm 发表了文章 • 2 个评论 • 2510 次浏览 • 2016-11-17 15:42 • 来自相关话题

1.Workerman 是不会丢包的。 Workerman 的 TCP 协议会粘包。 然后我简单的写了一个 粘包处理,希望大家参考。 嗯嗯嗯,我分享这东西,就是为自己以后方便搜索。 下面是代码的一部 ...查看全部
1.Workerman 是不会丢包的。
  1. Workerman 的 TCP 协议会粘包。


然后我简单的写了一个 粘包处理,希望大家参考。
嗯嗯嗯,我分享这东西,就是为自己以后方便搜索。
下面是代码的一部分。测试时我在C++客户端加了index,收到的包很完整,顺序也是准确。
$tcp_worker->onMessage = function($tcp_connection, $data){

global $sender_io,$global;

//如果需要,可以在这里加 包头判断 if(substr($data,0,1) != "{") 包头不是括号时,才进行组包。这样可能更strong一点。
if(!empty($global->IncompletePacket)){
echo "HAVE SUB PACKET,PACKET MERGE!\n";
echo "RECEIVED DATA\n";
var_dump($data);
echo "LASTED DATA\n";
var_dump($global->IncompletePacket);
echo "===PACKET MERGE START!===\n";
$data = $global->IncompletePacket . $data;
var_dump($data);
echo "===PACKET MERGE END!===\n";
}

//var_dump($data);
$json_data = json_decode($data,true);
if($json_data == NULL){
echo "INCOMPLETE PACKET\n";
var_dump($data);
$global->IncompletePacket = $data;
return;
}

$global->IncompletePacket = NULL;


switch ($json_data['msgtype']){
case 'USAGE_INFO':

用GatewayWorker TCP还需要自定义应用层协议么?

提问damao 回复了问题 • 2 人关注 • 1 个回复 • 1033 次浏览 • 2016-10-14 16:59 • 来自相关话题

长字符串被截断

提问walkor 回复了问题 • 2 人关注 • 2 个回复 • 1018 次浏览 • 2016-01-30 12:20 • 来自相关话题

关于pingNotResponseCount

提问walkor 回复了问题 • 2 人关注 • 2 个回复 • 1053 次浏览 • 2015-07-22 13:37 • 来自相关话题

workerman和C++socket通信发送和接收数据不一样

回复

提问blogdaren 回复了问题 • 2 人关注 • 1 个回复 • 504 次浏览 • 2019-01-04 06:49 • 来自相关话题

can not connect to tcp://127.0.0.1:xxxx Connection timed out in

回复

提问DaXin 回复了问题 • 3 人关注 • 3 个回复 • 650 次浏览 • 2018-11-16 18:00 • 来自相关话题

gateway总是在发送数据给客户端后tcp状态位发送FIN断开连接。

回复

提问walkor 回复了问题 • 2 人关注 • 1 个回复 • 760 次浏览 • 2018-06-19 16:33 • 来自相关话题

TCP模式,怎么主动给客户端发消息呢?

回复

提问zhengweipx 回复了问题 • 2 人关注 • 13 个回复 • 2620 次浏览 • 2018-04-11 15:51 • 来自相关话题

用GatewayWorker TCP还需要自定义应用层协议么?

回复

提问damao 回复了问题 • 2 人关注 • 1 个回复 • 1033 次浏览 • 2016-10-14 16:59 • 来自相关话题

长字符串被截断

回复

提问walkor 回复了问题 • 2 人关注 • 2 个回复 • 1018 次浏览 • 2016-01-30 12:20 • 来自相关话题

关于pingNotResponseCount

回复

提问walkor 回复了问题 • 2 人关注 • 2 个回复 • 1053 次浏览 • 2015-07-22 13:37 • 来自相关话题

[分享]解决 Workerman Tcp 丢包,粘包问题。

分享egirlasm 发表了文章 • 2 个评论 • 2510 次浏览 • 2016-11-17 15:42 • 来自相关话题

1.Workerman 是不会丢包的。 Workerman 的 TCP 协议会粘包。 然后我简单的写了一个 粘包处理,希望大家参考。 嗯嗯嗯,我分享这东西,就是为自己以后方便搜索。 下面是代码的一部 ...查看全部
1.Workerman 是不会丢包的。
  1. Workerman 的 TCP 协议会粘包。


然后我简单的写了一个 粘包处理,希望大家参考。
嗯嗯嗯,我分享这东西,就是为自己以后方便搜索。
下面是代码的一部分。测试时我在C++客户端加了index,收到的包很完整,顺序也是准确。
$tcp_worker->onMessage = function($tcp_connection, $data){

global $sender_io,$global;

//如果需要,可以在这里加 包头判断 if(substr($data,0,1) != "{") 包头不是括号时,才进行组包。这样可能更strong一点。
if(!empty($global->IncompletePacket)){
echo "HAVE SUB PACKET,PACKET MERGE!\n";
echo "RECEIVED DATA\n";
var_dump($data);
echo "LASTED DATA\n";
var_dump($global->IncompletePacket);
echo "===PACKET MERGE START!===\n";
$data = $global->IncompletePacket . $data;
var_dump($data);
echo "===PACKET MERGE END!===\n";
}

//var_dump($data);
$json_data = json_decode($data,true);
if($json_data == NULL){
echo "INCOMPLETE PACKET\n";
var_dump($data);
$global->IncompletePacket = $data;
return;
}

$global->IncompletePacket = NULL;


switch ($json_data['msgtype']){
case 'USAGE_INFO':