python怎么接收udp报文_在Linux上使用python接收多播UDP数据报

I have a hardware device that sends multicast data on my network. I have written a python script that receives the data and prints it. However, I've found that it only works on my Windows XP PC and doesn't work on my Ubuntu Linux 10.04 PC. Under Linux, nothing is received. It just goes round the while loop and there's never any data received. My code is posted below. Can you see any reason why this will not work under Linux? Thanks, Rab.

# Multicast client

# Adapted from: http://chaos.weblogs.us/archives/164

# on 05/03/2013

import socket

ANY = "0.0.0.0"

MCAST_ADDR = "224.0.33.154"

MCAST_PORT = 31800

# Create a UDP socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)

# Allow multiple sockets to use the same PORT number

sock.setsockopt(so

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UDP是一种无连接的传输协议,它不保证数据传输的可靠性,但是传输速度快。在Python中,可以使用socket库来实现UDP报文的发送和接收。下面是一个简单的UDP客户端和服务器端的示例代码: UDP服务器端代码: ```python import socket # 创建UDP socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定IP地址和端口号 server_address = ('localhost', 8888) server_socket.bind(server_address) # 接收数据 while True: data, client_address = server_socket.recvfrom(1024) print('received {} bytes from {}'.format(len(data), client_address)) print(data.decode()) # 发送响应数据 response = 'Hello, client!' server_socket.sendto(response.encode(), client_address) ``` UDP客户端代码: ```python import socket # 创建UDP socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 发送数据 server_address = ('localhost', 8888) message = 'Hello, server!' client_socket.sendto(message.encode(), server_address) # 接收响应数据 data, server_address = client_socket.recvfrom(1024) print('received {} bytes from {}'.format(len(data), server_address)) print(data.decode()) # 关闭socket client_socket.close() ``` 在上面的示例代码中,服务器端首先创建了一个UDP socket,并将其绑定到本地IP地址和端口号。然后,服务器端进入一个无限循环,不断接收客户端发送的数据,并发送响应数据。客户端首先创建了一个UDP socket,并向服务器端发送数据。然后,客户端接收服务器端发送的响应数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值