python - 在wireshark中看不到OPCUA协议(protocol)

标签 python excel pycharm wireshark opc-ua

创建了一个简单的客户端和服务器,并尝试在 Wireshark 中捕获操作,但无法同时看到 OPC UA 协议(protocol)。
我已经在 Windows 10 上的 pycharm 中完成了这段代码,请您指出问题出在哪里,在 Wireshark 中查看 OPCUA 协议(protocol)
我添加了我使用过的服务器代码,还添加了客户端代码并将wireshark图像附加为png文件
服务器代码:

from opcua import Server
from random import randint
from xlwt import Workbook
import datetime
import time

server = Server()
workbook = Workbook()
sheet = workbook.add_sheet('sheet 1')
#sheet.write(j, 0, time.time())
#workbook.save("sub_ohio_latency_ACK.xls")
url = "opc.tcp://LAPTOP-9UCODEJ5:48020"

server.set_endpoint(url)
name = "OPCUA_Server"
addspace = server.register_namespace(name)

node = server.get_objects_node()

Param = node.add_object(addspace, "Parameters")

Temp = Param.add_variable(addspace, "Temperature",0)
Time = Param.add_variable(addspace, "Time",0)
i = Param.add_variable(addspace, "TagID", 0)

Temp.set_writable()
Time.set_writable()


l = server.get_objects_node()
p = server.get_node(Temp)
k = server.get_node(Time)
j = server.get_node(i)

print(k)
print(p)
print(l)
print(j)

server.start()
print("server started at ()".format(url))
c = 0
while True:

    Temperature = randint(0,20)
    TIME = datetime.datetime.now()
    TagID = c
    print(Temperature, TIME, c)

    Temp.set_value(Temperature)
    Time.set_value(TIME)
    i.set_value(c)
    c += 1
    #time.sleep(2)

客户代码
from opcua import Client
import time
from xlwt import Workbook

workbook =Workbook()
#workbook2=Workbook()
sheet = workbook.add_sheet('sheet 1')

url = "opc.tcp://192.168.0.108:48020"

client = Client(url)
client.connect()
print("client connected")

for i in range(2000):
    objects = client.get_objects_node()
    l = client.get_node("ns=2;i=2")
    Temperature = l.get_value()
    #print(Temperature)
    k = client.get_node("ns=2;i=3")
    Time = k.get_value()
    j = client.get_node("ns=2;i=4")
    msg_tag = j.get_value()
    sheet.write(i, 0, msg_tag)
    sheet.write(i, 1, Temperature)
    sheet.write(i, 2, Time)
    sheet.write(i,3,time.time())
    workbook.save("test_client.xls")
    #print(Time)
    #print(msg_tag)
    #print(objects)
    #time.sleep(5)
client.disconnect()
print("client disconnected")

WIreshark Ref

最佳答案

默认情况下,Wireshark OPC UA 显示过滤器仅适用于默认 OPC UA TCP 端口 (4840)

由于您使用另一个端口 (48020),您需要更新将与 OPC UA 二进制协议(protocol)关联的 TCP 端口列表,以便让 Wireshark 知道它需要将这些端口上的数据包解码为 OPC UA 数据包。

您可以在此处更新列表:
Wireshark - 编辑 - 首选项 - 协议(protocol) - OpcUa - TCP 端口

Wireshark OPC UA Binary Protocol TCP Ports

关于python - 在wireshark中看不到OPCUA协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61483814/

相关文章:

python - 如何在 Python 中使用 Regex 搜索文档中的所有字母数字序列?

python - 是否可以使用 Python 进行部分继承?

Python 图形框架 : trouble installing dependencies

vba - 在单独的日志表中记录对单元格范围的更改的宏

excel - 如何在不使用sendkeys的情况下登录网站?

python - 在自制的子包中导入自制的 python 类时哪里出错了?

python - 关闭图形 - PyCharm

python - 将 Typing 和 Mypy 与描述符一起使用

c++ - 用 C++ 编写的 xll 内存分析器

python - tensorflow.keras 像导入一样在 PyCharm 中显示警告,在命令行上运行良好