multicast如何跨越路由器(附部分源码,请指正)(200分)

  • 主题发起人 主题发起人 fash
  • 开始时间 开始时间
F

fash

Unregistered / Unconfirmed
GUEST, unregistred user!
现象:局域网测试通过,但无法穿越路由器,netxray听后发现,未为
   向224.0.0.1发IGMP包,问题:
    1.IGMP包是否可控发送
    2关键原因
因时间紧迫,特向各位求援!
请看有何问题
FSocket:=WSASocket(AF_INET,SOCK_DGRAM,IPPROTO_UDP,NIL,0,
WSA_FLAG_OVERLAPPED or WSA_FLAG_MULTIPOINT_C_LEAF or
WSA_FLAG_MULTIPOINT_D_LEAF);
。。。。。。
err:=setsockopt(Fsocket,SOL_SOCKET,SO_REUSEADDR,@reuseAddr,sizeof(reuseaddr));
//是否应为(,IPPROTO_IP,IP_MULTICAST_IF,,)
。。。。。。
len:=sizeof(sockaddrIN);
err:=getsockname(Fsocket,sockAddrIN,len);
。。。。。。
sport:=SockAddrIn.sin_port;
sttl:=strtoint(ttl);
if sttl<>0 then
begin
err:=wsaIoctl(Fsocket,SIO_MULTICAST_SCOPE,@sttl,
sizeof(sttl),nil,0,cbret,nil,nil);
//用netxray听,ttl一直为1,IGMP包未向224.0.0.1发送,只发向了
广播地址,怀疑有问题!!!
。。。。。。。
sockAddrIn.sin_addr.S_addr:=inet_addr(Pchar(addr));
RemoteAddr:=sockAddrIn;
Tempsocket:=WSAJoinLeaf(Fsocket,sockAddrIn,sizeof(sockAddrIn),
nil,nil,nil,nil,JL_BOTH);


 
大部分路由器都不支持MultiCast吧.
 
张兄说的不错,的确如此,如果路由不做配置,那么无法穿越,看看您的路由是否支
持指定端口的广播路由吧
 
问题已解决,收回。
 
多人接受答案了。
 
后退
顶部