aşağıdaki şekilde bir form yaptım (Delphi 7 kullanıyorum).

bu form içinde aşağıdaki kodları kullandım.
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPServer, IdAntiFreezeBase,
IdAntiFreeze, IdTCPConnection, IdTCPClient, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
IdTCPServer1: TIdTCPServer;
IdTCPClient1: TIdTCPClient;
IdAntiFreeze1: TIdAntiFreeze;
ListBox1: TListBox;
Label1: TLabel;
Shape1: TShape;
SpeedButton1: TSpeedButton;
ListBox2: TListBox;
Label2: TLabel;
Memo1: TMemo;
BitBtn1: TBitBtn;
Timer1: TTimer;
procedure IdTCPServer1Connect(AThread: TIdPeerThread);
procedure IdTCPServer1Execute(AThread: TIdPeerThread);
procedure SpeedButton1Click(Sender: TObject);
procedure IdTCPServer1Disconnect(AThread: TIdPeerThread);
procedure Memo1Enter(Sender: TObject);
procedure IdTCPClient1Connected(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure IdTCPClient1Disconnected(Sender: TObject);
procedure IdTCPClient1Status(ASender: TObject;
const AStatus: TIdStatus; const AStatusText: string);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
var
pc: AnsiString;
begin
ListBox1.Items.Add('Bağlantı İsteği Geldi');
pc := AThread.Connection.Socket.Binding.PeerIP;
ListBox1.Items.Add('İstek Gelen IP:' + pc);
AThread.Connection.WriteLn('connecting_ok');
ListBox1.Items.Add('Gelen İsteğe "connecting_ok" Mesajı Gönderildi');
end;
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
log: AnsiString;
begin
log := AThread.Connection.ReadLn();
ListBox1.Items.Add('Msg: ' + log);
AThread.Connection.WriteLn('msg_receive_ok');
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.Down = True then
begin
SpeedButton1.Caption := 'Bağlantıyı Kes';
idTCPClient1.Connect();
end
else
begin
SpeedButton1.Caption := 'Bağlan';
try
Timer1.Enabled:=False;
idTCPClient1.Disconnect();
except
ListBox2.Items.Add('Bağlantı Kesme Hatası!');
end;
end;
end;
procedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);
var
pc: AnsiString;
begin
pc := AThread.Connection.Socket.Binding.PeerIP;
ListBox1.Items.Add('Bağlantıyı Kesti (IP):' + pc);
end;
procedure TForm1.Memo1Enter(Sender: TObject);
begin
Memo1.SelectAll;
end;
procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
Memo1.Enabled := True;
BitBtn1.Enabled := True;
Memo1.SetFocus;
Timer1.Enabled := True;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
idTCPClient1.Disconnect();
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
mesaj: AnsiString;
begin
mesaj := Trim(Memo1.Lines.Text);
idTCPClient1.WriteLn(mesaj);
Memo1.Clear;
Memo1.SetFocus;
end;
procedure TForm1.IdTCPClient1Disconnected(Sender: TObject);
begin
Memo1.Enabled := False;
BitBtn1.Enabled := False;
Timer1.Enabled := False;
end;
procedure TForm1.IdTCPClient1Status(ASender: TObject;
const AStatus: TIdStatus; const AStatusText: string);
begin
ListBox2.Items.Add(AstatusText);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
log: AnsiString;
begin
if idTCPClient1.Connected then
begin
log := idTCPClient1.ReadLn();
ListBox2.Items.Add('Server Mesajı: ' + log);
end;
end;
end.

Timer1 komponentini kaldırdığımda progam çalışıyor fakat idTCPServer1 den gelen mesajları okuyamıyorum. Bunu aktif edince de program kapanışta hata veriyor. Bu problemi nasıl çözebilirim fikri olan varmı?
Kodları denemek isterseniz download edebilirsiniz.
http://rapidshare.com/files/223725589/IndyTCPTest.rar