在python中收听已经用于UDP数据包的端口?

时间:2016-01-22 16:51:04

标签: python sockets udp sniffer

基本上我有一个程序,A,实时将结果(只是数据点)发送到另一个程序B来处理。每个数据点在特定端口和127.0.0.1上作为UDP数据包发送,包含点作为字符串。当B没有运行时,我可以做到

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("127.0.0.1, port))
while True:
    data, addr = sock.recvfrom(65565)

然后很明显,当B跑步时,我得到了

[Errno 98] Address already in use

如何查看这些端口上发送的数据包?在过去(单独的项目),我有一个使用

的数据包嗅探器
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)

它看到了所有传入和传出的UDP数据包,但这似乎过多了。我只需要查看来自特定端口的数据包。我对这种低级套接字编程很新。任何帮助表示赞赏

2 个答案:

答案 0 :(得分:1)

您可以使用scapy

这是一个小例子:

/jill-blog/blogpost1

答案 1 :(得分:0)

无论您使用的数据包嗅探器(无论是wireshark还是tcpdump),您都可以设置数据包过滤器来选择特定端口。即(tcpdump port port#)或(udp.port == port#)。