FAST 프로토콜을 통해 멀티 캐스트로 배포되는 특정 시장 데이터 피드를 구독하려고합니다. Java의 경우 MulticastSocket
이고 멀티 캐스트를 지원하는 DatagramChannel
이 있습니다.데이터 그램 소스가 정의 된 Java MulticastSocket
내가 사용하는 FAST 프로토콜 라이브러리 인 OpenFAST는 MulticastSocket
인스턴스를 사용하여 끝점을 만들지 만 구성에 원본 IP 주소를 지정하는 것은 불가능한 것처럼 보이며 "모든 원본"에 바인딩됩니다. 시장 데이터 피드. 그것은 가능이다 (자바 1.7 이후) 여기에 설명과 같이 정의 된 소스 IP와 DatagramChannel
만들려면 다음의 socket()
메소드가 리턴을
NetworkInterface interf = NetworkInterface.getByName("eth0");
InetAddress group = InetAddress.getByName("225.0.0.100");
InetAddress source = InetAddress.getByName("172.20.40.1");
DatagramChannel dc = DatagramChannel.open(ProtocolFamily.INET)
.setOption(SocketOption.SO_REUSEADDR, true)
.bind(new InetSocketAddress(5000))
.setOption(SocketOption.IP_MULTICAST_IF, interf);
MembershipKey key = dc.join(group, interf, source); // <- source specified
는 그러나, 나는 채널의 MulticastSocket
을 얻을 수있는 방법이 표시되지 않습니다를 그냥 일반 올드 DatagramSocket
.
소스 필터링이 활성화 된 MulticastSocket
을 직접 만들거나 DatagramChannel
에서 만들 수있는 방법이 있습니까?