有关WSAJoinLeaf()函数的用法,急,可再加分,谢!

时间:2023-01-30 23:51:03
SOCKET WSAJoinLeaf(
  SOCKET s,                          
  const struct sockaddr FAR *name,   
  int namelen,                       
  LPWSABUF lpCallerData,             
  LPWSABUF lpCalleeData,             
  LPQOS lpSQOS,                      
  LPQOS lpGQOS,                      
  DWORD dwFlags                      
);
1.这个函数中的lpCallerData和lpCalleeData这两个参数在当前的windows平台上并未真正实现,应均设为NULL(《windows网络编程技术》中   的原话)是不是这样?如果是,也就是说,这两个参数是不能用的。
2.在异步I/O模型中,是不是WSAJoinLeaf()如果成功返回,也就是加入组播成功,会发出FD_CONNECT消息?如果,发出了这个消息,谁会收到  这个消息,是组播中的所有成员,还是只是本机收到?
3.“在一个无根控制层面内,我们可强行实施自己的成员资格方案,这是通过实施自己组成员资格协议来实现的。”这是《windows网络编程技术》中的一段话,这段话是不是也就说,ip多播中我可以控制多播组的成员,而不是谁想加入多播组都可以?如果是这样,我将怎样来实现?
4.我如何得到多播组的成员的信息,如:ip地址,主机名等?

11 个解决方案

#1


没有人回答,也帮忙up一下!!!

#2


给我你的email,我发给你.

#3


把email贴出来,我给你发个例子

#4


只有在有根控制方案中,才会生成FD_CONNECT通知
再无根方案中,不能控制多播成员。

#5


谢了,HeavenS,我收到后,就给分
popnetin@etang.com

#6


推荐《visual c++ 网络协议分析及应用》

#7


只是本机收到

#8


这本书什么地方有啊?是不是很有用啊

#9


谢谢HeavenS,我已经收到,但是运行是有错误,是加入多播组失败。而且这个程序是最基本的用法,并且对上面的问题进行解答。不过我仍然谢谢你,结帖我时候我再给你分,谢谢!!

#10


关注
学习中

#11


我也有问题:
WSABUF wsaCalleeData;
m_hGroupSocket=WSAJoinLeaf(m_hSocket,(PSOCKADDR)&addr,sizeof(addr),NULL,&wsaCalleeData,NULL,NULL,JL_BOTH);
if(m_hGroupSocket==INVALID_SOCKET)
{
TRACE("WSAJoinLeaf:%d",WSAGetLastError());
                  ... ...

用F10执行到此处时,
m_hSocket=116
&addr=0x004178a4,且经过查看,其中包含有本机的ip
但还总是执行if语句内部,WSAEGetLastError()=10022,表明是传递的参数无效,为什么?
我把第五个参数改成NULL也一样错误
谁能帮我看一看

#1


没有人回答,也帮忙up一下!!!

#2


给我你的email,我发给你.

#3


把email贴出来,我给你发个例子

#4


只有在有根控制方案中,才会生成FD_CONNECT通知
再无根方案中,不能控制多播成员。

#5


谢了,HeavenS,我收到后,就给分
popnetin@etang.com

#6


推荐《visual c++ 网络协议分析及应用》

#7


只是本机收到

#8


这本书什么地方有啊?是不是很有用啊

#9


谢谢HeavenS,我已经收到,但是运行是有错误,是加入多播组失败。而且这个程序是最基本的用法,并且对上面的问题进行解答。不过我仍然谢谢你,结帖我时候我再给你分,谢谢!!

#10


关注
学习中

#11


我也有问题:
WSABUF wsaCalleeData;
m_hGroupSocket=WSAJoinLeaf(m_hSocket,(PSOCKADDR)&addr,sizeof(addr),NULL,&wsaCalleeData,NULL,NULL,JL_BOTH);
if(m_hGroupSocket==INVALID_SOCKET)
{
TRACE("WSAJoinLeaf:%d",WSAGetLastError());
                  ... ...

用F10执行到此处时,
m_hSocket=116
&addr=0x004178a4,且经过查看,其中包含有本机的ip
但还总是执行if语句内部,WSAEGetLastError()=10022,表明是传递的参数无效,为什么?
我把第五个参数改成NULL也一样错误
谁能帮我看一看