Niestety program klient nie dostaje odpowiedzi z serwera. Nie wiem czy błąd jest po stronie serwera czy klienta. wysyłanie dancyh na serwer przez klienta działa. Proszę o pomoc.
Poniżej kod serwera i klienta.
Z góry dzięki za pomoc
Klient
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Edit2: TEdit;
Edit3: TEdit;
Button6: TButton;
Klient: TClientSocket;
wynik: TMemo;
wynik2: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure KlientRead(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
// Przypisujemy wpisany przez użytkownika adres IP do komponentu
Klient.Address := Edit1.Text;
// Aktywujemy komponent (włączamy go)
Klient.Active := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Klient.Active :=False;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
a: integer;
c: string;
begin
try
a:=StrToInt(Edit2.Text);
c:=IntToStr(a);
Klient.Socket.SendText('a='+c);
except
wynik.Lines.Add('podaj liczbę');
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Klient.Socket.SendText('oblicz');
end;
procedure TForm1.KlientRead(Sender: TObject; Socket: TCustomWinSocket);
var
odebrane : string;
begin
odebrane := Socket.ReceiveText ;
wynik2.Lines.Clear;
wynik2.Lines.Add(odebrane);
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Klient.Socket.SendText('blad');
end;
procedure TForm1.Button6Click(Sender: TObject);
var
b: integer;
d: string;
begin
try
b:=StrToInt(Edit3.Text);
d:=IntToStr(b);
Klient.Socket.SendText('b='+d);
except
wynik.Lines.Add('podaj liczbę');
end;
end;
end.
Serwer
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, MMSystem, StdCtrls;
type
TForm1 = class(TForm)
Serwer: TServerSocket;
wynik: TMemo;
wynik2: TMemo;
wynik3: TMemo;
wynik4: TMemo;
wynik5: TMemo;
Button1: TButton;
wynik6: TMemo;
procedure SerwerClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SerwerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
komenda : string;
a : string;
b : string;
h : string;
k : string;
l : string;
c : integer;
f : integer;
g : integer;
TFa : TextFile;
TFb : TextFile;
begin
// Przypisujemy otrzymany od klienta tekst do zmiennej
komenda := Socket.ReceiveText;
if Pos('a=', komenda)>0 Then
begin
a:=komenda;
Delete(a, 1, 2);
AssignFile(TFa, 'C:\Documents and Settings\Ja\Moje dokumenty\szkoła\4 rok\praca inżynierska\zdakny kalkulator2\danea.txt');
try
Rewrite(TFa);
Writeln(TFa, a);
wynik2.Lines.Clear;
wynik2.Lines.Add(a);
finally
CloseFile(TFa);
end;
end;
if Pos('b=', komenda)>0 Then
begin
b:=komenda;
Delete(b, 1, 2);
AssignFile(TFb, 'C:\Documents and Settings\Ja\Moje dokumenty\szkoła\4 rok\praca inżynierska\zdakny kalkulator2\daneb.txt');
try
Rewrite(TFb);
Writeln(TFb, b);
wynik.Lines.Clear;
wynik.Lines.Add(b);
finally
CloseFile(TFb);
end;
end;
if komenda = 'oblicz' Then
begin
wynik3.Lines.LoadFromFile('C:\Documents and Settings\Ja\Moje dokumenty\szkoła\4 rok\praca inżynierska\zdakny kalkulator2\danea.txt');
wynik4.Lines.LoadFromFile('C:\Documents and Settings\Ja\Moje dokumenty\szkoła\4 rok\praca inżynierska\zdakny kalkulator2\daneb.txt');
k:=wynik3.Lines[0];
l:=wynik4.Lines[0];
f:= StrToInt(k);
g:= StrToInt(l);
c:=f+g;
h:= IntToStr(c);
wynik5.Lines.Clear;
wynik5.Lines.Add(h);
Serwer.Socket.Connections[Serwer.Socket.ActiveConnections - 1].SendText(h) ;
end;
if komenda = 'blad' Then
MessageBox(Handle,'Wystąpił straszny błąd. Nic się nie stało ;)','Błędny błąd',MB_OK+MB_ICONERROR);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h : string;
begin
h:=wynik5.Lines[0];
wynik6.Lines.Add(h);
Serwer.Socket.Connections[Serwer.Socket.ActiveConnections - 1].SendText(h) ;
end;
end.