我在一个局域网中,有多台服务器,用Socket如何实现一台工作站同时连接多台服务器?

解决方案 »

  1.   

    用多个ClientSocket控件分别连接
      

  2.   

    ClientSocket控件可否由代码自动添加,能给我一段代码例子吗?谢谢
      

  3.   

    procedure TForm1.ClientSocketRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      //接收事件
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      ClientSocket1: TClientSocket;
    begin
      ClientSocket1 := TClientSocket.Create(nil);
      try
        ClientSocket1.Address := '服务器地址';
        ClientSocket1.Port := 1234; //服务器端口
        ClientSocket1.OnRead := ClientSocketRead; //接收事件
        //其他事件根据需要也要添加进来
      finally
        ClientSocket1.Free;
      end;
    end;
      

  4.   

    我在program 中用您的代码,动态生成 Socket 控件,在“ClientSocket1.OnRead := ClientSocketRead; //接收事件”句编译出错,“[Error] aaa.dpr(233): Incompatible types: 'method pointer and regular procedure'”,请问有办法解决吗?我是刚学Delphi 的,请多指教!!!
      

  5.   

    查找CLIENTSOCKET的帮助信息,查看ONREAD事件的函数原型
      

  6.   

    想连接一个服务器的时候,就自动生成一个clientsocket控件,断开再释放这个控件就可以了,随你联几个服务器都是可能的啊
      

  7.   

    program Project1;uses
      Forms,
      Classes,
      Windows,
      SysUtils,
      ShlObj,
      ActiveX,
      Messages,
      Controls,
      Dialogs,
      StdCtrls,
      ExtCtrls,
      Menus,
      ComCtrls,
      FileCtrl,
      ShellAPI,
      ComObj,
      Registry,
      Variants,IdBaseComponent, IdComponent, IdUDPBase,IdUDPClient,ScktComp;{$R *.res}
    procedure ClientSocketRead(Sender: TObject;Socket: TCustomWinSocket);
    Var Str1 : String;
    Begin
      try
        Str1 := Socket.ReceiveText;
      except
      end;
    End;procedure ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    begin
    //   if ClientSocket.Active then MessageBox(0,'true','',MB_OK + MB_ICONWARNING)
    //                          else MessageBox(0,'false','',MB_OK + MB_ICONWARNING);
    end;Function CheckComputer(Const CurrentIP : String) : Boolean;
    Var
      ClientSocket1: TClientSocket;
    begin
      ClientSocket1 := TClientSocket.Create(nil);
      try
        ClientSocket1.Active := False;
        ClientSocket1.Address := CurrentIP;
        ClientSocket1.Port := DefaultPortNum; //服务器端口
        ClientSocket1.ClientType := ctNonBlocking;
        ClientSocket1.OnRead := ClientSocketRead; //接收事件
        //ClientSocket1.OnDisconnect := ClientSocketDisconnect;
        ClientSocket1.Active := True;
        //其他事件根据需要也要添加进来
      finally
        ClientSocket1.Free;
      end;
    End;begin
      Application.Initialize;
      If CheckComputer('192.168.0.100') Then MessageBox(0,'ok','',MB_OK + MB_ICONWARNING);
      
    end.