delphi7的Idtcpserver与Idtcpclient 如何使用。知道的请进?

解决方案 »

  1.   

    demo中有一个例子,但是不太好,写的不是很明白。
    以下是我从网上找的一个,然后自己改了改。
    unit MainFrm;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent,
      IdTCPConnection, IdTCPClient, ComCtrls, StdCtrls, ExtCtrls, IdContext;type
      TfrmMain = class(TForm)
        tcpClient: TIdTCPClient;
        tcpServer: TIdTCPServer;
        statusBar: TStatusBar;
        GroupBox1: TGroupBox;
        GroupBox2: TGroupBox;
        serverip: TLabeledEdit;
        serverport: TLabeledEdit;
        serverstop: TButton;
        clientcon: TButton;
        clientdiscon: TButton;
        memo: TMemo;
        msg: TEdit;
        sendbt: TButton;
        serverstart: TButton;
        procedure tcpServerExecute(AContext: TIdContext);
        procedure tcpServerConnect(AContext: TIdContext);
        procedure serverstopClick(Sender: TObject);
        procedure serverstartClick(Sender: TObject);
        procedure sendbtClick(Sender: TObject);
        procedure msgKeyPress(Sender: TObject; var Key: Char);
        procedure FormCreate(Sender: TObject);
        procedure clientdisconClick(Sender: TObject);
        procedure clientconClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      frmMain: TfrmMain;implementation{$R *.dfm}procedure TfrmMain.clientconClick(Sender: TObject);
    begin //客户端点了连接按钮
      if serverip.Text = '' then
      begin
        MessageDlg('请输入服务器IP',mtError,[mbok],0);
        serverip.SetFocus;
      end;
      if serverport.Text = '' then
      begin
        MessageDlg('请输入服务器端口号',mtError,[mbok],0);
        serverport.SetFocus;
      end;
      tcpclient.Host := serverip.Text;
      tcpClient.Port := StrtoInt(serverport.Text);
      try
        tcpclient.Connect;
        statusBar.SimpleText := '已连接' + serverip.Text;
        memo.Lines.Add('已连接' + serverip.Text)
      except
        statusBar.SimpleText := '服务器连接不上';
      end;
    end;procedure TfrmMain.clientdisconClick(Sender: TObject);
    begin //客户端点了断开
      tcpclient.Disconnect();
      memo.Lines.Add('客户端已断开');
      statusbar.SimpleText := '客户端已断开';
    end;procedure TfrmMain.FormCreate(Sender: TObject);
    begin
      //自动启动服务器
      try
        tcpserver.Active := true;
        statusbar.SimpleText := '服务器已启动';
      except
        statusbar.SimpleText := '本软件使用的端口被占用';
      end;
    end;procedure TfrmMain.msgKeyPress(Sender: TObject; var Key: Char);
    begin
      if key = #13 then
      begin
        sendbt.Click;
      end;
    end;procedure TfrmMain.sendbtClick(Sender: TObject);
    begin
      //发送信息
      if msg.Text = '' then
      begin
        MessageDlg('请输入要发送的信息',mtError,[mbOk],0);
        msg.SetFocus;
      end
      else
      begin
        tcpClient.Socket.WriteLn(msg.Text);
        //tcpClient.SendCmd(msg.Text);
        //tcpclient.WriteLn(msg.Text);
      end;
    end;procedure TfrmMain.serverstartClick(Sender: TObject);
    begin
      //服务器端启动
      if not tcpServer.Active then
      begin
        tcpServer.Active := true;
        statusBar.SimpleText := '服务器端已启动';
      end;
    end;procedure TfrmMain.serverstopClick(Sender: TObject);
    begin
      //服务器端停止
      if tcpServer.Active then
      begin
        tcpServer.Active := false;
        statusBar.SimpleText := '服务器端已停止';
      end;
    end;procedure TfrmMain.tcpServerConnect(AContext: TIdContext);
    begin
      memo.Lines.Add('接收来自'+AContext.Connection.Socket.Binding.PeerIP+'的连接');
    end;procedure TfrmMain.tcpServerExecute(AContext: TIdContext);
    var
      readstr: string;
    begin
      readstr := AContext.Connection.Socket.ReadLn();
      memo.Lines.Add(readstr);
    end;end.
      

  2.   

    到2ccc上,下载吧,有一个很好的indy10写的例子