none
请教一个关于vista系统下面socket::select操作的问题 RRS feed

  • 问题

  • socket::connect局域网络上面的主机,在xp和win 7下面都一切正常,基本上每一个存在的主机在socket::connect之后都能够通过select拿回来

    但是在vista系统下面却出现了无法select回来或者只能连接到少数几个主机的情况,请问有谁遇到过这种状况?

    2011年1月11日 9:48

答案

  • Hi lxyscls,

          出现这个问题的可能性很多。

          请您确认下载Vista系统下所有的主机的防火墙是否关闭。如果没关闭的话,请把它关闭再试试。

          另外也可能和IPv6(IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。)有关。

          下面是vista防火墙关闭的步骤:

            第一步:打开VISTA系统中“控制面板”,进入“控制面板”选择“安全”选项。

            第二步:接下来在“安全”设置窗口中点“Windows防火墙”。这样我们就启动了VISTA系统防火墙的简单模式。

            第三步:通过左上角的“启用或关闭Windows防火墙”选项可以实现开启或停止防火墙操作。

     

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月13日 7:12
    版主

全部回复

  • Hi lxyscls,

          出现这个问题的可能性很多。

          请您确认下载Vista系统下所有的主机的防火墙是否关闭。如果没关闭的话,请把它关闭再试试。

          另外也可能和IPv6(IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。)有关。

          下面是vista防火墙关闭的步骤:

            第一步:打开VISTA系统中“控制面板”,进入“控制面板”选择“安全”选项。

            第二步:接下来在“安全”设置窗口中点“Windows防火墙”。这样我们就启动了VISTA系统防火墙的简单模式。

            第三步:通过左上角的“启用或关闭Windows防火墙”选项可以实现开启或停止防火墙操作。

     

    谢谢,

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月13日 7:12
    版主
  • “基本上每一个存在的主机在socket::connect之后都能够通过select拿回来”

    什么叫基本上都能拿回来?如果不是每个连接都能收到的话,可以100%肯定你的程序有BUG


    0xBAADF00D
    2011年1月18日 0:59
    版主
  • 我想再怎么bug也不会说vista系统专有吧
    2011年3月16日 3:24
  • 这个就比较奇怪了,vista的问题大部分都是因为权限的问题 Windows下最好还是用完成端口。

    最好你还是检查一下程序发送的时候有没有内存泄露的问题,比如send/recv时有没有大小越界的情况


    0xBAADF00D

    2011年3月16日 12:52
    版主
  • 你好,现在经过我的测试——这个现象出现在vista 32位和xp 64位上面,vista 64和xp32还有win7一切正常,并且是多个机型的电脑,所以应该跟硬件本身没有关系。

    http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/23a3b696-0d50-4fdc-ae28-a56e22a2a692

    这是我在msdn的英文论坛贴的问题,里面有部分代码

    对同网段的255台电脑进行分5段扫描,每段51台

    建立socket,setsockopt

    然后就是在connect后面进行select的操作——这个时候还根本没有进行任何send/recv的操作,只有在select拿回可写socket后才会做的——调试也证明只要拿得回socket号,后面send的工作是没有问题的,所以后半部分的代码我没有贴

    2011年3月18日 2:05