注意:若是接收数据为空时,有可能数据是16进制,需要转换
service:
port = 9999
host = '*'
device_mac = string.upper('fa14576B6247')-- upper
m1 = string.sub(device_mac,1,2)
m2 = string.sub(device_mac,3,4)
m3 = string.sub(device_mac,5,6)
m4 = string.sub(device_mac,7,8)
m5 = string.sub(device_mac,9,10)
m6 = string.sub(device_mac,11,12)
device_mac = m6..m5..m4..m3..m2..m1
log('device_mac:'..device_mac)
local socket = require("socket.core")-- /*require socket module*/
local tcp = socket.tcp()
local host = host
--local port = '23'
local tcpbind = tcp:bind(host,port)
if(tcpbind and tcpbind == 1) then
log('Binding to host'..host..port)
else
log('Binding error')
end
local e = tcp:listen(50)
if(e and e == 1) then
log('listen ok')
else
log('listen error')
end
log('waiting connect cli')
local client = assert(tcp:accept())
log(client)
if(client ~= nil) then
log('access success')
else
log('accept err')
end
local revbuff,status,partial = client:receive(100)--lmcore.strtohex
if(revbuff) then
decodeddata = lmcore.strtohex(revbuff, string.len(revbuff))--hex
log('decodeddata:'..decodeddata)
num,endNum = string.find(decodeddata,device_mac)
data = string.sub(decodeddata,endNum+3,endNum+4)
data = tonumber(data,16)
log('data:'..data)
if num ~= nil then
log('Found that the device is nearby'..num..endNum)
end
end
--send
tcp:close()
client:
port = 9999
host = '127.0.0.1'
local socket = require("socket.core")-- /*require socket module*/
local tcp = socket.tcp()
local connect = tcp:connect(host,port)
tcp:settimeout(4)
log(connect)
if connect ~= nil then
log(port)
end
local rev = tcp:receive(50)
if(rev) then
log("rev:"..rev)
end
tcp:close()
--end
tcp:close()