我用了两个应用程序,应用程序a里面放的是idtcpclient另外一个应用程序b放idtcpserver 
a应用程序的发送代码:
var abc:string; 
begin 
  abc:=edit1.text
  idtcpclient1.connect();
  idtcpclient1.writebuffer(abc,sizeof(abc));
  idtcpclient1.disconnect();
end;
b应用程序的接收代码
var efg:string;
begin
  athread.Connection.ReadBuffer(efg,sizeof(efg));
end;
运行程序 发送的时候 在接收放会出现这样的错误
   access violation at address 00403eb0 in module 'b.exe' read of address 00d53fe4 
如何修改啊 大侠们 偶要崩溃了都

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdTCPServer, IdBaseComponent, IdComponent,
      IdTCPConnection, IdTCPClient;type
      TForm1 = class(TForm)
        Button1: TButton;
        ListBox1: TListBox;
        IdTCPClient1: TIdTCPClient;
        IdTCPServer1: TIdTCPServer;
        procedure IdTCPServer1Execute(AThread: TIdPeerThread);
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
    var
      s:string;
    begin
      with AThread.Connection do
      begin
        s:=ReadLn();
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    self.IdTCPClient1.Host:='192.168.168.1';
    self.IdTCPClient1.Port:=5555;
    try
    self.IdTCPClient1.Connect(5000);
    self.IdTCPClient1.Write( 'hello' );
    self.IdTCPClient1.Disconnect;
    except
      //....
    end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    self.IdTCPServer1.DefaultPort:=5555;
    self.IdTCPServer1.Active:=true;
    end;end.
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    self.IdTCPClient1.Host:='192.168.168.1';
    self.IdTCPClient1.Port:=5555;
    try
    self.IdTCPClient1.Connect(5000);
    self.IdTCPClient1.WriteLn( 'hello' );//--
    self.IdTCPClient1.Disconnect;
    except
      //....
    end;
    end;
      

  3.   

    在一个应用程序里面可以啊 两个应用程序就不行了  write分在两个里面是可以的我试过  但是如果用writebuffer() 和readbuffer()分在两个应用程序里面就不行了
      

  4.   

    var
    s:string;
    begin
    s:='helloworld';
    self.IdTCPClient1.WriteBuffer( s,sizeof(s) );
    end;
    //
    procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
    var
      s:string;
    begin
      with AThread.Connection do
      begin
        ReadBuffer(s,sizeof(s));
      end;
    end;