web前端与网关数据通信方式
1、采用UDP通信方式,调用php自带的接口stream_socket_client()自定义函数,php逻辑代码如下:
function getUdp($smsg = '', $ip = '', $port = '8888')
{
$addr = "udp://".$ip.":".$port;
$socket = stream_socket_client($addr,$errno,$errstr);
if(!$socket){
die("ERROR:{$errno} - {$errstr}\n");
}
fwrite($socket,$smsg);
$result = fread($socket, 100);
fclose($socket);
return $result;
}
2、自定义接口,按照协议构造需要传输的数据,其逻辑代码如下:
function macaddrSend($mac)
{
$macdata = explode(":",$mac);
$str = "\xBB";
$str .= chr(hexdec($macdata[0]));
$str .= chr(hexdec($macdata[1]));
$str .= chr(hexdec($macdata[2]));
$str .= chr(hexdec($macdata[3]));
$str .= chr(hexdec($macdata[4]));
$str .= chr(hexdec($macdata[5]));
return $result;
}
3、设计前端页面,以POST的方式提交表单数据,前端关键代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>set macaddress</title>
</head>
<body>
<?php
$ip_value = $_SERVER['SERVER_ADDR'];
$path = "mac.txt";
if($_POST['sub'] == 1)
{
$msg = macaddrSend($_POST['macaddr']);
getUdp($msg,$ip_value);
@unlink($path);
$fd = @fopen($path,'a');
$mac_value = $_POST['macaddr'];
@fwrite($fd,$mac_value);
@fclose($fd);
}
?>
<form action="" method="post">
<div>MAC地址:</div>
<div>
<input type="text" onkeyup="value=value.replace(/[^\dA-Fa-f:]/g,'')" name="macaddr" value="<?php echo $mac_value;?>" rev="ok">
</div>
<div>
<button type="submit" name="sub" value="1">提交</button>
</div>
</form>
</body>
</html>
最后推荐一个公众号,一枚IT技术人成长路上关于生活和职场的思考,欢迎书友们前来交流和分享心得