Python解码UDP

标签 python sockets networking udp

代码:

import socket, binascii, struct

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)
while True:
    print s.recv(2048)

输出:

Ek�9@@�F5��W�jq��� stackexchangecom� electronics �
h h

stackexchangecomDa�scifi ET@@�<���� stackoverflowcom���meta ,��� stackoverflowcom�A���meta ,��� stackexchangecomG��security Ee@@�+���� stackexchangecom���scifi

如您所见,一些数据已被解码/解释,但其余部分不确定原因

有人能帮忙吗?

最佳答案

您正在打印包含任意二进制数据的原始 UDP 数据包。其中一些字节在 printable 中范围,但不在该范围内的那些将转换为 �。

您可以通过打印其 representation 来更好地查看该数据, 它正常显示可打印字节,将不可打印字节显示为十六进制转义码。为此,将您的 print 语句更改为:

    print repr(s.recv(2048))

我怀疑您真的想解码这些数据包。这很有可能,但有点技术性,您可能应该先稍微研究一下这个主题。 :) 本文作者 Silver Moon,Code a network packet sniffer in python for Linux ,看起来很有帮助。

关于Python解码UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31591845/

相关文章:

python - 使用 selenium python 从下拉选项中选择一个值

python - 如何避免在我的代码片段中使用\xc2 字符或 ?

c - C 中带环绕的 8 位校验和

python - 通过套接字发送字符串(python)

java - 使用 ServerSocket 和 Socket 类从浏览器获取完整的 URL 路径

javascript - Flask - 让 JavaScript 和 Python 进行通信

python - 诊断python中的内存泄漏

ios - 如何在 iOS 上设置 UDP 的“不分段”标志?

node.js - 加载资源失败:net::ERR_INSECURE_RESPONSE socket.io

python - 有没有办法检查套接字是否仍在运行?