尽管有端点

时间:2019-03-29 14:21:18

标签: python sockets udp timeout recv

我正在尝试编写一些代码,该代码通过UDP套接字将SIP OPTIONS数据包发送到设备并接收响应。我已经在Wireshark中验证了端点接收了我的数据包并做出了相应的响应,但是套接字从未收到响应,并且我设置的超时得到满足并引发异常。

代码:

client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.bind(('', _port))
client_socket.settimeout(10.0)
client_socket.connect((_destination_ip, _port))
_payload = ('OPTIONS sip:{0}:{1};transport=udp SIP/2.0\r\n'
    'Via: SIP/2.0/UDP {2}:{1};branch=1234\r\n'
    'From: \"{3}\"<sip:{3}@{2}:{1}>;tag=5678\r\n'
    'To: <sip:{0}:{1}>\r\n'
    'Call-ID: 9abcd\r\n'
    'CSeq: 1 OPTIONS\r\n'
    'Max-Forwards: 0\r\n'
    'Content-Length: 0\r\n\r\n').format(_destination_ip, _port, _source_ip, _host_name)


client_socket.send(bytes(_payload, "utf-8"))


try:
    data = client_socket.recv(2048)
    print('{0}').format(data)
except socket.timeout:
    print('Request timed out')
finally:
    client_socket.close()

这是Wireshark的输出,用于验证我的端点是否正在响应: Wireshark output

或者,我使用Scapy编写了类似的测试,并且能够接收和显示响应。该代码最终将作为对Nagios服务器的检查运行,并且我想使用默认的'socket'库,这样就可以避免将Scapy安装为将要运行此程序的所有Nagios工人的依赖项。

0 个答案:

没有答案