WINCE5.0 多址广播WSASocket创建失败?

zxdyu2009 2010-03-17 11:25:49
首先说下,我的WINCE系统是支持WinSock2的,可以用WinSock2库的函数,在我的程序中想要创建多址广播套接字
创建函数:SOCKET WSASocket(
int af,
int type,
int protocol,
LPWSAPROTOCOL_INFO lpProtocolInfo,
GROUP g,
DWORD dwFlags
);
// 创建一个多址广播套接字
m_hSock = WSASocket(AF_INET, SOCK_DGRAM, IPPROTO_UDP,
(LPWSAPROTOCOL_INFO)NULL, 0, WSA_FLAG_OVERLAPPED
| WSA_FLAG_MULTIPOINT_C_LEAF | WSA_FLAG_MULTIPOINT_D_LEAF);
返回错误,前面的代码Socket已经初始化了。错误码是10022,就是WSAEINVAL ,无效的参数,可能是函数dwFlags无效了,这个在WINDOWS下是没问题的,请问哪位知道怎么弄?我的目的要实现多址广播。
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhliusoft 2011-09-18
  • 打赏
  • 举报
回复
用楼上的方法也不行,在WINCE 5.0下。
zxdyu2009 2010-03-17
  • 打赏
  • 举报
回复
我自己用setsockopt函数解决了,呵呵,不过这个在WINDOWS上,直接给参数5不对,函数setsockopt会失败。结贴了。
ceersoft 2010-03-17
  • 打赏
  • 举报
回复
上面用到的结构体没定义下面给出:
struct ip_mreq
{
struct in_addr imn_multiaddr; /*加入或者退出的广播组IP地址*/
struct in_addr imr_interface; /*加入或者退出的网络接口IP地址*/
};
ceersoft 2010-03-17
  • 打赏
  • 举报
回复
struct ip_mreq mreq;
mreq.imn_multiaddr.S_un.S_addr = inet_addr(m_szBrdAddr);
mreq.imr_interface.S_un.S_addr = inet_addr(m_szLocalAddr);

int iR = setsockopt(m_hSock,IPPROTO_IP,5/*IP_ADD_MEMBERSHIP*/,(const char*)&mreq,sizeof(mreq));
if ( iR < 0 )
{
AfxMessageBox(L"setsockopt error!!!!1");
}

这个在WINCE下行的,呵呵

19,498

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧