You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python接收来自互联网的UDP数据包?

问题:Windows笔记本通过Python接收4G网络设备的UDP数据包

我希望在Windows笔记本电脑上使用Python接收并处理来自非本地(WiFi)网络设备的UDP数据包。我查阅了大量讲解Python发送和接收UDP数据包的教程,但大多数都是演示在同一台电脑或同一局域网内设备间的操作。我想要接收来自仅连接LTE/4G网络的智能手机的UDP数据包。

我使用以下代码在笔记本上接收UDP数据包:

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(('0.0.0.0', 1234)) # takes tuple as input argument 

while True:
    try: 
        try:
            message,addr = server_socket.recvfrom(4096) # package size, expressed in bytes. Seems like arbritrary number? 
            print("Data received from node: " + str(message))
        except Exception as e: 
            print(e)
            print("Failed package delivery")
    except (KeyboardInterrupt, SystemExit):
        print("Exited manually")
        raise

目前可行的情况是:当智能手机与笔记本处于同一WiFi网络,且将目标IP设置为笔记本的私有IP时,程序可以通过安卓应用接收UDP消息。

但当我将目标IP改为笔记本的公网IP,并让智能手机断开WiFi仅连接4G/LTE网络时,Python程序无法接收到任何数据,即使我关闭了笔记本的Windows防火墙。

我的疑问是:

  • 我发现笔记本的公网IP与同一WiFi网络下的其他设备相同(应该是路由器的公网IP)。如果公网IP无法唯一标识我的笔记本,UDP数据包如何能到达我的笔记本?是否需要提供更多信息?或者我应该使用其他IP地址?
  • 是不是防火墙仍需要进行一些调整?

内容的提问来源于stack exchange,提问作者Daan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:50:08