10个一模一样的服务端放在10台机器上,先随即连接一个,如果连接不到服务端则依次连接每一台服务器,如果都连接不上客户端退出
假定10台机器IP分别为192.168.0.1 192.168.0.3 192.168.0.5 192.168.0.7  192.168.0.9 
                    192.168.0.2 192.168.0.4 192.168.0.6 192.168.0.8  192.168.0.10
我用10个winsock做处理,不知道效率怎样,请问各位大大有没有效率比较好的处理方法啊
能不能用数组啊,小弟不才,求各位大大帮忙 
                      

解决方案 »

  1.   

    应该先
    dim i as integer
    Dim after As Doublefor i=1 to 10
        Shell("ping 192.168.0."+Cstr(i)+" -n 1 | find /c "+chr(34)+"timed out"+chr(34)+" >."+Cstr(i)+"txt")
    next
    after = Now + 3# / 24# / 3600#
    Do
        DoEvents
        If Now > after Then Exit Do
    Loop
    '将1.txt,2.txt,...,10.txt文件中的第一个字符读出来判断是'1'表示不通,是'0'表示能通
    '随机挑一个是0的(或者优先用上次连接成功的)用WinSock连接
      

  2.   

    上面
    Shell("ping 192.168.0."+Cstr(i)+ " -n 1 | find /c "+chr(34)+"timed out"+chr(34)+ " >"+Cstr(i)+ ".txt")
    应该是
    Shell("ping 192.168.0."+Cstr(i)+ " -n 1 | find /c "+chr(34)+"timed out"+chr(34)+ " >"+Cstr(i)+ ".txt")
      

  3.   

    思路是先利用ping命令快速得到哪个服务器可以连通,然后再用WinSock连,不然直接用WinSock连无法连通的服务器很耗时。
      

  4.   

    非阻塞CONNECT可以设置超时秒数
      

  5.   

    楼住的意思是在客户端放10个winsock吧  如果是:
    我觉得楼主这样做一定好处
    在请求连接的时候10个winsock同时请求连接
    如果任何一个连接成功则其他的九个关闭
    这种方法我觉得是上面所有方法中最快连接上的方法。
    但是存在一个问题 就是10个同时请求连接然后一个连接成功后关闭另外9个在内存资源上显得似乎不合理否则上面各位说的都是很好的方法。只需要在客户端设置1个winsock,循环连接,成功则退出。或者是先ping ip 通了就连接