python - 在 python 中想要读取特定端口上的 UDP 广播消息
问题描述
我是 python 编程的新手。我的任务是读取 UDP 端口 4012 上的广播提要。我有 Visual Basic 代码,它工作正常。代码如下。
#Dim receivingUdpClient As New UdpClient(4012)
#Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
#receiveBytes = receivingUdpClient.Receive(RemoteIpEndPoint)
#returnData = Encoding.ASCII.GetString(receiveBytes)
#Dim TestArray() As String = Split(returnData, ";")
我在 python 中编写了以下程序来读取 UPD 端口 4012 上的广播提要,但无法使用以下 python 程序实现它。该程序正在运行并显示 cmd 窗口消息“等待来自 4012 的 4012 localhost”。
有人可以帮我解决这个问题吗?如果代码是正确的,我该如何检查解决这个问题?如果有人可以推荐任何视频或材料供阅读,我还想阅读有关 Python 中套接字编程的好材料,特别是有关 UDP 套接字广播阅读的内容。
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_host = 'localhost'
udp_port = 4012
s.connect((udp_host,udp_port))
print("waiting for 4012",udp_host, "from" ,udp_port)
data , addr= s.recvfrom(1024)
print("Received Messages: ", data ,"from", addr)
解决方案
这个片段是我经常使用的创建基本套接字服务器的东西......
socket_config = {
'udp_ip_address': 'your.ip.here.bla',
'udp_port_no': '6789',
'max_send_size': '1024'
}
#
# socket creation
#
serverSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverSock.bind((socket_config['udp_ip_address'],
int(socket_config['udp_port_no'])))
def receive_loop():
# eternal loop starts here
while True:
data, addr = serverSock.recvfrom(int(socket_config['max_send_size']))
data = data.decode('utf-8')
logger.debug("Message:" + data)
推荐阅读
- node.js - 如何使用 excel4node 自动调整 Excel 工作表所有列的宽度?
- java - InputStreamReader(System.in) 中的 BufferedReader 不采用 STDIN 流
- sql - 两周的总和和团体工资
- c# - AzureServiceTokenProvider.GetAccessTokenAsync 是否跨(提供者的)实例缓存令牌?
- python - 使用 Parse 包解析字符串
- azure - 在 CI 中部署 Azure Function App 会间歇性地更改功能键
- datepicker - 如何使用 ngx-bootstrap Datepicker 和 Angular 6 或任何其他库一次只显示一周
- r - 如何在带彩色条的可格式化表格中将数字显示为美元金额
- c# - 如何使 SelectMany 没有参数适用于通用 IEnumerable
- mysql - 如何不对表中的所有行求和