我正在尝试使用以太网上的UDP数据包将控制命令发送到传感器。
传感器具有硬编码的源IP和端口号,它只会回复,因此我必须在发送之前绑定端口。由于我的机器上有几个接口,我还必须绑定IP地址。示例代码如下所示。
import socket
DST_IP = "..."
SRC_IP = "..."
PORT_NO = .
message = "..."
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.bind((SRC_IP, PORT_NO))
sock.connect((DST_IP, PORT_NO))
sock.sendto(bytes(message, "utf-8"), (DST_IP, PORT_NO))
sock.sendto(bytes(message, "utf-8"), ("255.255.255.255", PORT_NO))
print("src ", sock.getsockname()) # verify binding successful
print("dst ", sock.getpeername()) # verify connecting successful
sock.close()
我正在使用Wireshark监控数据包并检查发送的数据以验证命令是否成功。
我没有调试的想法。建议?