我想得到第一个没有在sos
和DIS
端口上通信的数据包的帧时间(相对),而ip地址不是if语句中提到的那个。但是数据包应该使用端口24111.但是,下面的代码不能用于此目的。它有效,直到我添加udp_port~=24111
。之后它没有给我任何结果,这意味着它不会进入条件语句。我试图以多种方式编写条件,甚至将其分成新的if语句,但它不起作用。我在这做错了什么。提前感谢您的建议。
这是我目前的一段代码
local first_outpacket = 0
local flag = 0
function stats_first_packet()
local udp_port
local frame_time
local ip_addr
frame_time = time_relative_extractor()
udp_port = udp_port_extractor()
ip_addr = ip_addr_extractor()
if ( udp_port ) then
if (not (udp_port == 3000 or udp_port==3838 or flag==1 or ip_addr=="192.168.1.2" or udp_port~=24111)) then
first_outpacket = frame_time
print(frame_time)
flag = 1
else
-- print("tcp_src_port already recorded")
end
else
-- print("no tcp_src_port")
end
end
答案 0 :(得分:1)
问题显然在于extractor()
函数返回的数据类型。为了将它们与if语句中的另一个值进行比较,必须使用tostring()
函数将它们转换为字符串。
例如:
if (not (tostring(udp_port) == "3000" or tostring(udp_port)=="3838" or flag==1))