for i:=1 to 8 do
    begin
      try
        begin
          Clientsocket3.Active:=False;
          ClientSocket3.Host:='128.64.32.'+inttostr(i);
          Clientsocket3.Active:=True;
        end;
      except
        showmessage('Failed');
      end;
    end;当第一行为 for i:=1 to 1 do 的时候就可以连接到 128.64.32.1
当第一行为 for i:=2 to 2 do 的时候也可以连接到 128.64.32.2但是只要循环连接,比如 for i:=1 to 2 do 就一台也连不上,
尝试了每次连接后Sleep(1000);也不行,请教解决的办法,谢谢解决一定给分。

解决方案 »

  1.   

    sleep(1000)只有0.001秒,这么短的时间不一定能保证连上网络.
      

  2.   

    这样改试试
    var
      Count: integer;
      Flag: boolean;
    begin
      Count := 1;
      flag := true;
      While count <= 8 do
        begin
          try
            if flag then
            begin
              Inc(Count);
              flag := false;
              Clientsocket3.Active:=False;
              sleep(100);
              ClientSocket3.Host:='128.64.32.'+inttostr(i);
              Clientsocket3.Active:=True;
              flag := true;
            end;
          except
            showmessage('Failed');
          end;
        end;
      

  3.   

    Count的初始值应为0
    ClientSocket3.Host:='128.64.32.'+inttostr(Count);
      

  4.   

    for i:=1 to 8 do
      begin
        try
          Clientsocket3.Active:=False;
          ClientSocket3.Host:='128.64.32.'+inttostr(i);
          Clientsocket3.Connect();
          flag = true;
        except
        else
          showmessage('Failed');
          flag = False;
        end;
        if flag then break;
      end;
      

  5.   

    兩個聯接的時間間隔太短了, 特別是在嚐試聯接一些不存在的IP.
    >> halfdream(哈欠)  一定要用阻塞方式才行.
    說得也有理;>>sleep(1000)只有0.001秒,这么短的时间不一定能保证连上网络.
    是0.1秒;  
     
      

  6.   

    huojiehai(海天子) 的方法我试了,还是不行,谢谢
    blocking方式我也用了,等待时间很长,也连不上,
    sleep(1000)也不行,请各位再看看,谢谢
      

  7.   

    试试把
    Clientsocket3.Active:=False;
    改成
    Clientsocket3.Close;
      

  8.   

    或者试试
    在Clientsocket3.Active:=False;后加上Clientsocket3.Close;
    在Clientsocket3.Active:=True;前加上Clientsocket3.Open;
      

  9.   

    试试下面的代码:
    for i:=1 to 8 do
        begin
          try
            begin
              Clientsocket3.Active:=False;
              sleep(100);
              ClientSocket3.Host:='128.64.32.'+inttostr(i);
              Clientsocket3.Active:=True;
              ClientSocket3.Socket.Lock;
            end;
          except
            showmessage('Failed');
          end;
        end;
      

  10.   

    哦,你看看:
    1。你在服务器端的socket激活了没有?
    2。别用for结构,改if ....then...else结构试试?或你先向一个IP连接试试?也许是其他的问题?
      

  11.   

    我设置断点一看,每次循环后ClientSocket3.active都是false,没有激活,怎么回事?
      

  12.   

    你的服务器socket激活了吗?你先用一个固定IP连接试试?
      

  13.   

    ClientSocket的ClientType设置为:ctNonBlocking下面增加2个地方的延时,应该可以了。var begintime:cardinal;
    begin
    for i:=1 to 8 do
        begin
          try
            begin
              Clientsocket3.Active:=False;          begintime:=gettickcount;
              while gettickcount - begintime < 200 do  //可以不要200毫秒,看情况设
                    Application.ProcessMessages;          ClientSocket3.Host:='128.64.32.'+inttostr(i);
              ClientSocket3.Port:=你的端口号; //最好端口也要写上;
              Clientsocket3.Active:=True;          begintime:=gettickcount;
              while gettickcount - begintime < 1000 do  //可以不要1000毫秒,看情况设
                    Application.ProcessMessages;        end;
          except
            showmessage('Failed');
          end;
        end;
    end;
      

  14.   

    lincanwen(密码错误) 说的对
    连接服务器应该要指明端口的啊
      

  15.   

    没得说,结贴,lincanwen(密码错误) 全奖,非常感谢!!!
    也感谢其他热心的朋友!
    非常谢谢你们,感谢csdn.