twisted python의 멀티 캐스트 프로토콜을 실험하고 있습니다.Twisted Python : 멀티 캐스트 서버가 예상대로 작동하지 않습니다.
내가 224.0.0.1에 듣고, 두 서버를 생성하고 224.0.0.2 다음과 같은 :
이from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor
from twisted.application.internet import MulticastServer
class MulticastServerUDP(DatagramProtocol):
def __init__ (self, group, name):
self.group = group
self.name = name
def startProtocol(self):
print '%s Started Listening' % self.group
# Join a specific multicast group, which is the IP we will respond to
self.transport.joinGroup(self.group)
def datagramReceived(self, datagram, address):
print "%s Received:"%self.name + repr(datagram) + repr(address)
reactor.listenMulticast(10222, MulticastServerUDP('224.0.0.1', 'SERVER1'), listenMultiple = True)
reactor.listenMulticast(10222, MulticastServerUDP('224.0.0.1', 'SERVER2'), listenMultiple = True)
reactor.run()
가 그럼 난 "HELLO"보내려면이 코드를 실행 :
import socket
MCAST_GRP = '224.0.0.1'
MCAST_PORT = 10222
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
sock.sendto("HELLO", (MCAST_GRP, MCAST_PORT))
이 간단한 예입니다
결과는 매우 혼란 스러웠습니다.
- 그룹 IP 및 MCAST_GRP를 모두 224.0.0.1로 설정하면 두 서버에서 모두 메시지 (예상)가 수신되었습니다. - 그룹 IP를 224.0.0.1 및 MCAST_GRP로 설정하면 모두 전송됩니다. 스크립트를 224.0.0.2 (또는 224.0.0.1과 다른 값)로 설정하면 두 서버가 메시지를받지 못했습니다. (예상)
- 하나의 서버의 그룹 IP를 224.0.0.1로 설정하고 다른 하나는 224.0.0.2로 설정하면 이상한 것들 우연히 있다. MCAST_GRP를 224.0.0.1 또는 224.0.0.2로 설정하면 두 서버 중 하나만 메시지를 수신 할 것으로 예상됩니다. 그 결과 두 서버 모두 메시지를 받았습니다. 무슨 일이 일어나고 있는지 잘 모르겠습니다. 누군가 이것을 설명 할 수 있습니까?
참고 : 동일한 컴퓨터에서 실행하고 있습니다.
SL
는