Problem z odpowiedzią z serwera

0

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.
0

http://4programmers.net/Forum/Delphi_Pascal/187041-wysylanie_danych_serwer_-_klienci masz w moim ostatnim poście przykład działającego chata z serwerem. Są tam zaimplementowane proste polecenia jak nowy rozmówca czy rozmówca odłączony. Zobacz sobie jak to wygląda (są jakieś tam opisy co do czego). Do działania potrzebuje pakietu synapse (nie instaluje się - to nie komponenty)

0

Wow. I to ma być praca inżynierska sztudenta(!)?
Rany - to ja bez studiów jestem bogiem programowania.

0

Te ścieżki może nie są przyczyną problemu, ale tego tak się nie robi. Zmień je na pobieranie lokalizacji twojego programu + folder\plik_bazy.
I popraw formatowanie.

ps. Pisałeś na szybko ten kod?

1 użytkowników online, w tym zalogowanych: 0, gości: 1