Dear Lukas,

Experimenting with multicast, I found it convenient to be able to set
the interface for multicast traffic. My suggestion allows setting this
interface. It might be handy to have a overloaded version or to use two
different procedures. It let this up to you to decide whatever is better
for compatibility with other platforms.

Also I did not yet cover the IP6 part.

---
procedure TUDPBlockSocket.AddMulticast(MCastIP, MCastInAddr: string);
var
  Multicast: TIP_mreq;
  Multicast6: TIPv6_mreq;
  n: integer;
  ip6: Tip6bytes;
begin
  if FIP6Used then
  begin
    ip6 := StrToIp6(MCastIP);
    for n := 0 to 15 do
      Multicast6.ipv6mr_multiaddr.u6_addr8[n] := Ip6[n];
    Multicast6.ipv6mr_interface := 0;
    SockCheck(synsock.SetSockOpt(FSocket, IPPROTO_IPV6, IPV6_JOIN_GROUP,
      PAnsiChar(@Multicast6), SizeOf(Multicast6)));
  end
  else
  begin
    if MCastInAddr='' then
      MCastInAddr := cAnyHost;
    Multicast.imr_multiaddr.S_addr := swapbytes(strtoip(MCastIP));
    Multicast.imr_interface.S_addr := swapbytes(strtoip(MCastInAddr));
    SockCheck(synsock.SetSockOpt(FSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP,
      PAnsiChar(@Multicast), SizeOf(Multicast)));
  end;
  ExceptCheck;
end;
---

Best regards

Thomas Kerkmann

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
synalist-public mailing list
synalist-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synalist-public

Reply via email to