發(fā)送過來數(shù)據(jù)是十六進制的,workerman不能識別0x00,遇到就結(jié)束接收了,用bin2hex,但是我用了還是不行,因為 $message根本就不完整,0x00及后面的數(shù)據(jù)都丟失了。那位大蝦可以指點一二。不想用Base64等加密方法,就是想知道workerman到底能不能做到完美支持十六進制的透傳,還是這本身就是一個BUG。
首先肯定不是BUG,然后這也是一個被問爛了的問題,裸tcp協(xié)議是基于字節(jié)流的本來就如此,簡單說就是會有粘包發(fā)生,需要制定應(yīng)用層通訊協(xié)議,具體看手冊吧: http://doc.workerman.net/protocols/why-protocols.html
服務(wù)端
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker('tcp://0.0.0.0:1238');
$worker->onMessage = function($connection, $data) {
$connection->send($data);
};
Worker::runAll();
測試結(jié)果:
客戶端發(fā)送完整,workeman接收完整,workerman發(fā)送完整,客戶端接收完整。
估計是你代碼bug了