我正在面对: -
选择(..)API在使用包含Win7 Home premium上的IPv6和IPv4套接字的FD_SET集调用时抛出错误,但同一应用程序在其他win7机器上运行正常。但如果我在FD_SET中只使用IPv6或IPv4套接字,那么它运行正常。所以我认为,系统支持IPv6和IPv4。
我尝试使用以下链接中的服务器: -
http://msdn.microsoft.com/en-us/library/windows/desktop/ms738639%28v=vs.85%29.aspx
即使这个样本与select call相同也是错误。
任何人都可以帮助我找出这个错误背后的原因并解决这个问题。
感谢!!!
答案 0 :(得分:0)
不幸的是,Windows不允许在同一个select
的调用中混合来自不同提供商的套接字。这是因为允许每个提供程序实现自己的select
处理程序。
fd_set结构中包含的套接字必须与单个服务提供者关联。 - select function
Windows将选择一个提供程序将select
发送到(我相信该集合中第一个套接字的提供者),该提供程序将无法识别其他提供程序的套接字。老实说,你不应该使用select
- 它只是提供与BSD套接字接口的兼容性。它绝对不是“Windows方式”。