[ anon68680 @ 31.10.2005. 21:13 ] @
radim neku client/server aplikaciju i po prvi put koristim ttcpclient i ttcpserver komponente. e sad, uspeo sam da posaljem string od clienta ka serveru ali ne mogu nikako obrnuto. ono probam standardno sendln ali iz nekog razloga ne radi. moze li neko da postuje par linija coda o tome?
[ Srki_82 @ 31.10.2005. 21:17 ] @
Zasto ne koristis Indy komponente za komunikaciju? Besplatne su i mnogo su dobre, a idu sa Delphi-em
[ cacafaca @ 25.10.2009. 09:32 ] @
Citat:
krza: radim neku client/server aplikaciju i po prvi put koristim ttcpclient i ttcpserver komponente. e sad, uspeo sam da posaljem string od clienta ka serveru ali ne mogu nikako obrnuto. ono probam standardno sendln ali iz nekog razloga ne radi. moze li neko da postuje par linija coda o tome?

U čoveče, pa ovo je bio problem još 2005. Ja pokušavam neštoi slično da uradim. Hoću da jednostavno pročim neku stranu. Na primer ovako:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TcpClient1 do
  begin
    RemoteHost:='www.google.com';
    RemotePort:='80';
    Connect;
  end;
end;

procedure TForm1.TcpClient1Connect(Sender: TObject);
begin
  with TcpClient1 do
  begin
    Sendln('GET / HTTP/1.1');
    Sendln('Host: '+RemoteHost);
    Sendln('');
  end;
end;

procedure TForm1.TcpClient1Receive(Sender: TObject; Buf: PAnsiChar;
  var DataLen: Integer);
begin
  ShowMessage('Primio poruku');
  Memo1.Lines.Add(Buf);
end; 

Ali pošaljem leo zahtev. Sve je uredno jer sam proveravao na svom web serveru. Piše u log fajli kod 200, što znači da je sve u redu što se tiče zahteva. Ali nikako da mi se pokrene okidač za događaj OnReceive, i samim tim ne primam ništa. U pitanju je Delphi 7, i čitao sam na netu da su i ostali imali probelma sa njim. Ostali koji su ih savetovali šta da rade uglavnom su preporučivali da koriste Indy komponente, jer je stara komponenta TClientSocket izbačena iz Delphi-ja. Ustvari nije izbačena, već se ne instalira nego mora ručno da se doda: Component > Install packages > Add > "c:\program files\borland\delphi\bin\dclsockets70.bpl". Pojaviće se u Internet tabu.
[ tkaranovic @ 27.10.2009. 14:18 ] @
Koristio sam TClientSocket i TServerSocket za telnet, ftp, pop i smtp protokole i nije bilo problema. Koliko vidim, neće biti problema ni u d2010. TcpClient nisam koristio ali primer za TcpClient konektovanje se može naći pretragom po demo primerima.

TcpClient će da proradi kada se u gornjem kodu, u Button1Click, zameni: "Connect;", sa: "Active := true;" ili: "Open;".
[ p.zivanovic @ 31.10.2009. 23:04 ] @
Hm ... pa ovo bi trebalo da bude prosto:

Slanje stringa od klijenta ka serveru:

IdTCPClient2.IOHandler.WriteLn('saljem neki string ...');
....
.... cekam da mi server odgovori ....
s:=IdTCPClient2.IOHandler.ReadLn;
..................

Ja sam koristio sledeće rešenje kada jednostavno prikazujem poruke servera dok ne dobijem string #### koji označava kraj "konverzacije"

try
s:=IdTCPClient2.IOHandler.ReadLn;
while not (s='####') do
begin
Memo1.lines.add(s);
s:=IdTCPClient2.IOHandler.ReadLn;
end;
finally
IdTCPClient2.Disconnect;
idtcpclient2.free;
end;

Nadam se da sam bio od pomoći.