TTcpClient, TTcpServer nesnelerini kullanarak iki program arasında mesaj alıp göndermek istiyorum.
Serverda portu açıyor ve client de bağlanıyor ama tek bir harf bile gönderemiyorum.
Serverda.
TForm1.S1Accept olayı sadece ilk bağlantı sağlandığında çalışıyor ondan sonra tok yok.
Client de
TForm2.C1Receive olayı hiç mi hiç çalışmıyor.
Veri göndermek için
c1.Sendln(edit1.Text); kodunu kullanıyorum...
KAYNAK KODLAR
SERVER
Kod: Tümünü seç
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Web.Win.Sockets, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
Button1: TButton;
S1: TTcpServer;
Button2: TButton;
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure S1CreateHandle(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure S1Accept(Sender: TObject; ClientSocket: TCustomIpClient);
procedure S1DestroyHandle(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
s1.Sendln(edit1.Text);
memo1.Lines.Add('BEN - > '+ edit1.Text);
memo1.SelStart:=length(memo1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
s1.Active:=false;
s1.Active:=true;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
form2.Show;
end;
procedure TForm1.S1Accept(Sender: TObject; ClientSocket: TCustomIpClient);
var
gveri:string;
begin
s1.Accept;
memo1.Lines.Add('---');
s1.ReceiveBuf(gveri,200);
memo1.Lines.Add('KARŞI TARAF - > '+ gveri);
end;
procedure TForm1.S1CreateHandle(Sender: TObject);
begin
memo1.Lines.Add(datetimetostr(now)+' - > Dinleme başladı.');
end;
procedure TForm1.S1DestroyHandle(Sender: TObject);
begin
memo1.Lines.Add('Hareket');
end;
end.
Kod: Tümünü seç
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Web.Win.Sockets, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
Button1: TButton;
C1: TTcpClient;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure C1Connect(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure C1Receive(Sender: TObject; Buf: PAnsiChar; var DataLen: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
c1.Sendln(edit1.Text);
memo1.Lines.Add('BEN - > '+ edit1.Text);
memo1.SelStart:=length(memo1.Text);
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
c1.Active:=false;
c1.RemotePort:='1525';
c1.RemoteHost:='localhost';
c1.Connect;
end;
procedure TForm2.C1Connect(Sender: TObject);
begin
memo1.Lines.Add(datetimetostr(now)+' - > Bağlantı sağlandı. ' )
end;
procedure TForm2.C1Receive(Sender: TObject; Buf: PAnsiChar;
var DataLen: Integer);
var
gveri:string;
begin
memo1.Lines.Add('---');
c1.ReceiveBuf(gveri,datalen);
memo1.Lines.Add('KARŞI TARAF - > '+ gveri);
end;
end.