2014-05-12 5 views
1

다음 Code Snippet을 가지고 있으며 동일한 VirtualBox VM에서 실행합니다. 나는 오류가 없지만 나는 아무것도받지 못한다. wireshark에서 멀티 캐스트 주소에 대한 내 로컬 Adress에서 오는 패킷을 볼 수 있지만 반환하는 패킷은 없습니다.PYQT5 멀티 캐스트 UDP를 사용하여 데이터 그램을 수신하지 못합니다.

receiver.py

import PyQt5.QtNetwork as QTN 

groupaddr = QTN.QHostAddress("239.255.43.22") 
udp = QTN.QUdpSocket() 
udp.setSocketOption(QTN.QAbstractSocket.MulticastLoopbackOption,1) 
udp.setSocketOption(QTN.QAbstractSocket.MulticastTtlOption,32) 
udp.bind(QTN.QHostAddress.AnyIPv4,54555,QTN.QUdpSocket.ShareAddress) 
ni = QTN.QNetworkInterface() 
udp.joinMulticastGroup(groupaddr,ni) 


while True: 
    if udp.isReadable(): 
     data,host,port = udp.readDatagram(udp.pendingDatagramSize()) 
     print(data) 
     print(host) 
     udp.leaveMulticastGroup(groupaddr) 
     udp.close() 
     break 

sender.py

import PyQt5.QtNetwork as QTN 


groupaddr = QTN.QHostAddress("239.255.43.22") 
udp = QTN.QUdpSocket() 
udp.setSocketOption(QTN.QAbstractSocket.MulticastLoopbackOption,1) 
udp.setSocketOption(QTN.QAbstractSocket.MulticastTtlOption,32) 
ni = QTN.QNetworkInterface() 

udp.bind(QTN.QHostAddress.AnyIPv4,54555,QTN.QUdpSocket.ShareAddress) 
udp.setMulticastInterface(ni) 
udp.joinMulticastGroup(groupaddr,ni) 

udp.writeDatagram("test",groupaddr,54555) 

답변

1

나는() 대신에있다 IsReadable의) (hasPendingDatagrams를 사용하여, 바보이고 RTFM은 더 조심해야 그것을

해결