2011-01-18 3 views
1

어쩌면이 해결책은 매우 간단하고 나는 그것을보기에는 너무 바보입니다. 나는 인디 (10)와 함께 오래 된 응용 프로그램을 다시 컴파일해야하고인디 10 및 소켓 옵션 설정

inUDPServer.Binding.SetSockOpt(Id_IPPROTO_IP, Id_IP_ADD_MEMBERSHIP, PChar(@mreq), SizeOf(mreq)); 

을 해야하는 데 사용하지만, 새로운 TIdSocketHandle.SetSockOpt 3 개 정수를 취이 라인이있다. 이제 ip_mreq를 어떻게 제공해야합니까? imr_multiaddr.S_addr을 전달하면 # 10014 오류 - 버퍼 오류가 발생합니다. 아마도 여러분 중 한 분이 아이디어를 갖고 계신 것 같습니다.

건배 앤디

답변

1

사용 TIdSocketHandle.AddMulticastMembership() 방법 대신 (인디 10의 버전을 사용할 수 그 방법이없는 경우, 당신은 먼저 새로운 스냅 샷으로 업데이트해야합니다), 예 :

inUDPServer.Binding.AddMulticastMembership('Group IP address'); 

지정된 그룹 IP의 구성원 자격에 TIdSocketHandle.IP 주소를 추가합니다. IP는 TIdSocketHandle.IPVersion 속성의 설정에 따라 IPv4 또는 IPv6로 지정할 수 있습니다.

또는 TIdUDPServer 대신 직접 TIdIPMCastServerTIdIPMCastClient 구성 요소를 사용하는 것이 좋습니다.

+0

매력처럼 작동합니다, 감사합니다. – Andy

관련 문제