php tcp客户端 发送数据的时候加上4字节头,防止粘包
function sendMsgToBalance($id, $id_port){
$port = 8000;
$ip = "192.168.1.179";
if(!empty($id) && !empty($id_port)) {
$send_string = '123456789';
$len = strlen($send_string);
$header = pack("I*",$len);
$len = strlen($send_string);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
echo file_put_contents("test.txt","create faild....".$recv_url.date("Y-m-d H:i:s")."\n",FILE_APPEND );
exit;
}else {
}
socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>30, "usec"=>0 ) );
socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>30, "usec"=>0 ) );
$result = socket_connect($socket, $ip, $port);
if ($result === false) {
echo "socket_connect() faild.\nReason: ($result) " . socket_strerror($result) . "\n";
file_put_contents("test.txt","connection faild....". date("Y-m-d H:i:s")."\n",FILE_APPEND );
socket_close($socket);
exit;
}else {
}
if(!($ret_len = socket_write($socket, $header.$send_string, strlen($send_string) + 4))) {
echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
file_put_contents("test.txt","send faild....".date("Y-m-d H:i:s")."\n",FILE_APPEND );
socket_close($socket);
exit;
}
file_put_contents("test.txt","sendMessage start ".$send_string.date("Y-m-d H:i:s")."\n",FILE_APPEND );
socket_close($socket);
}else{
error("hls监控参数错误!...");
}
}