微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XP和Vista之间使用winsock API差异的UDP多播

这似乎是build立一个UDP多播套接字所需的实现已经改变之间的Windows XP和Windows Vista。 特别:

在Windows XP下, 必须先调用bind()然后才能引用任何特定于多播的套接字选项。

但是,在Windows Vista下,在处理多播套接字时, 不能调用bind() 。

失败这两个点中的任何一个都会导致运行时发生套接错误

Winsock2如何侦听()块?

TCP可调参数不会在数据传输速率中显示预期的结果

如何在非阻塞套接字上处理OpenSSL SSL_ERROR_WANT_READ / WANT_WRITE

可以“连接”调用套接字返回成功,没有服务器调用“接受”?

接收来自不同组中的同一个socket上的组播数据

我疯了,还是有其他人看到这个呢? 有没有比条件编译的bind()调用更好的解决scheme?

通过套接字发送图片(发送func)在c + +,但不要收回完整(Windows)!

如何让2个Java应用程序相互交谈?

怎样才能在.NET上创build一个软件路由器?

如何检测哪个networking接口在Windows 7中使用c + +接收UDP数据包?

C ++套接字的send()会导致系统错误10053

从你使用IP_ADD_MEMBERSHIP并加入多播组的setsockopt()调用得到什么错误

我刚刚在我的服务器框架中运行了一些测试,我注意到我在Windows 7上调用了bind() (我没有一个Vista盒子),然后我也可以像预期的那样加入一个多播组因为绑定地址和多播地址都是有效的。

但是,我无法使用INADDR_ANY调用bind(),因为这会导致多播组的失败并返回错误10022( WSAEINVAL ),如果多播组地址不是有效的多播地址,则调用将失败,错误10049( WSAEADDRNOTAVAIL )。 这一切似乎足够公平。

我正在启动一个XP的盒子…

[在XP上测试后编辑]

在XP上, bind()到INADDR_ANY是合法的,使用无效的多播地址是合法的。 所以,我期望,你正在做的其中之一,因此它适用于XP,而不是在Vista / Win7上。

那么,你有什么错误,你绑定了什么地址?

我不知道这个具体的问题,但是我知道网络堆栈是从头开始重写的

很老的问题,但有人知道如何检查在机器上存在哪个版本的winsock?

我有一些旧的机器仍然使用XP或服务器2003.但测试的Windows版本没有帮助,似乎有可能有一个Windows版本5.1,它不接受绑定之前,和一个机器有5.2版本接受它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐