Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem sa Indy 10

[es] :: Pascal / Delphi / Kylix :: problem sa Indy 10

[ Pregleda: 1979 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milos Sreckovic
System administrator, SET d.o.o.
Šabac

Član broj: 30126
Poruke: 267
212.62.46.*

Sajt: www.set.rs


+2 Profil

icon problem sa Indy 1030.08.2006. u 16:58 - pre 155 meseci

Napravio sam mali deamon koji na serveru sve sto treba da radi je prihvati konekciju i primi poruku i to izvrsi(poziva funkciju system() i izvrsava to sto je poslati) znaci nema nikakvog logovanja ni nista, samo prvu poruku koju dobije, on izvrsi...

koristim komponentu idtcpclient u delphiju da posaljem tu komandu, ali problem nastaje kad hocu da posaljem dve komande...
Na serveru stavim da cita dve zaredom i da kako koju procita, on izvrsi... u clientu kazem da posalje dve zaredom, ali kad posalje jednu, on je izvrsi, a kod druge zakuca...

ovo je napisano u delphiju
Code:

IdTCPClient1.Connect;
IdTCPClient1.SendCmd('echo labud');

port i IP sam namestio pre pokretanja programa

a source servera cu uplodovati
Prikačeni fajlovi
 
Odgovor na temu

qwertzuiopasdfghjkl

Član broj: 94834
Poruke: 86
*.adsl.net.t-com.hr.



Profil

icon Re: problem sa Indy 1031.08.2006. u 08:45 - pre 155 meseci
Ja se sjecam da je mene Indy 10 dobrano zezao, tako da sam presao na Indy 9!!

Ako vec znas unaprijed koji su nazivi komandi onda:
-postavi IdTCPServer na formu i klikni na njega, zatim odi u Object Inspector i klikni na '...' kod CommandHandlers.. nakon toga klikni na onu slicicu (Add new [Ins]) i onda klikni na taj 0-TIdCommandHandler0 te u polje komand u object inspectoru ukucaj 'komanda1' (bez navodnika ;) ) i onda klikni na Events i u OnCommand event obradjuj sta oces.. znaci kad server dobije komandu (string) od klijenta 'komanda1' izvrsit ce ti se kod u onom OnCommand eventu!!

Ako ne znas koje komande mogu bit onda koristi ReadLn.. ne sjecam se da sam to nasao u Indy10, zato vise volim Indy9:
var s:string;
s:=ASender.Thread.Connection.ReadLn;

Imas u attachu neki matori moj program koji sam bio radio!!


ps:il koristi winsock..
Prikačeni fajlovi
 
Odgovor na temu

Milos Sreckovic
System administrator, SET d.o.o.
Šabac

Član broj: 30126
Poruke: 267
*.ptt.yu.

Sajt: www.set.rs


+2 Profil

icon Re: problem sa Indy 1031.08.2006. u 09:12 - pre 155 meseci
ma server je napisan u C++ u linuxu i vrti se na serveru. Problem je kod klijenta!!(bar mislim jer test klijen isto u C++ isto pod linuxom radi normalno)
 
Odgovor na temu

qwertzuiopasdfghjkl

Član broj: 94834
Poruke: 86
*.adsl.net.t-com.hr.



Profil

icon Re: problem sa Indy 1031.08.2006. u 11:45 - pre 155 meseci
A.. zeznuo sam se :)

Zasto to onda ne iskucas u winsocku na winu (ako vec mora bit na win-u)...??
Nakacis se na server i samo sendbuf(msocket,buf,sizeof(buf),0);

I zasto umjesto:
Code:

int daizvrsi(char *a)
{
    if (
    (a[0]=='s')&&
    (a[1]=='y')&&
    (a[2]=='s')&&
    (a[3]=='t')&&
    (a[4]=='e')&&
    (a[5]=='m')) return 1;
    else return 0;    
}


jednostavno ne napravis if(strcmp(a,"system")==0) return 1!?
 
Odgovor na temu

qwertzuiopasdfghjkl

Član broj: 94834
Poruke: 86
*.adsl.net.t-com.hr.



Profil

icon Re: problem sa Indy 1031.08.2006. u 11:52 - pre 155 meseci
Evo kako bi islo to u delphiu:
Code:

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows, WinSock;

var
  wsa_Data: WSADATA;
  serverService: sockaddr_in;
  m_socket: Integer;
  zahtjev: String;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  WSAStartup(MAKEWORD(2,2), wsa_Data);
  m_socket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

  serverService.sin_family:=AF_INET;
  serverService.sin_addr.s_addr:=inet_addr('127.0.0.1');  //adresa servera
  serverService.sin_port:=htons(1111);  //port na kojem je server

    if (connect(m_socket, serverService, sizeof(serverService)) = SOCKET_ERROR) then
    WriteLn('Problem');

zahtjev:='komanda1';
send(m_socket,zahtjev[1],Length(zahtjev),0);

zahtjev:='komanda2';
send(m_socket,zahtjev[1],Length(zahtjev),0);


  ReadLn;
  WSACleanup;
end.


Mozda ima koja greska u kodu... tu sam ga bio mjenjao/pisao!
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: problem sa Indy 10

[ Pregleda: 1979 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.