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

Razmena podataka preko interneta!

[es] :: Pascal / Delphi / Kylix :: Razmena podataka preko interneta!

[ Pregleda: 4471 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

NebojsaS
N Petrovic
Trebinje

Član broj: 45273
Poruke: 5
*.paleol.net.



Profil

icon Razmena podataka preko interneta!17.01.2005. u 10:45 - pre 234 meseci

Da li neko ima primer koji malo bolje objašnjava prenos podataka preko interneta preko FTP i UDP komponenti. (Da radi u Delphi-u 7.0). Čitao sam da može preko INDY komponenti.

Konkretan primer: Imam dva računara. Između njih bih trebao imati stalnu komunikaciju odnosno prenos podataka u realnom vremenu. Poruka(paket) bi trebala biti promenljive veličine (izraženo u byte-ima).


Unapred hvala!
NS
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
*.vdial.verat.net.

Sajt: www.diy-fever.com


+1 Profil

icon Re: Razmena podataka preko interneta!18.01.2005. u 01:19 - pre 234 meseci
ja bih ti preporucio da probas sa TClientSocket i TServerSocket (ako koristis D7 nisu instalirane po defaultu, tako da Components -> Install Packages -> Add bin/dclsockets70.bpl). Samo postavis port da bude isti na obe strane. Serveru stavi Active na true, clientu postavi Host na adresu servera i promeni Active na true. Salju se podaci kao text, a ako ti bas treba nesto drugo uvek mozes da napravis TStringStream i ti prebacis u neki drugi format)

posto treba stalno da se salje glupo je koristiti FTP...

pozdrav
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

NebojsaS
N Petrovic
Trebinje

Član broj: 45273
Poruke: 5
*.paleol.net.



Profil

icon Re: Razmena podataka preko interneta!20.01.2005. u 07:34 - pre 234 meseci



Ne trebam slati kao text. Trebam da šaljem niz byte-ova od kojih su prva četiri konstantna, 5-ti redni broj merenja koji veže za sobom još dodatna 4 byte-a. I tako do zadnjeg merenja.

Primer: Ovo je procedura preko koje ja preuzmem podatke sa DDE servera (aplikacija + topic), I ovo je rađeno u Delphi 4.0.
***Ja bih trebao da ovu poruku da preuzmem i konstatno da šaljem na drugi računar***.
I to sve odraditi u Delphi 7.0

Da li može preko TMemoryStream-a slično ovo i u sedmici. Probao sam i ne mogu da odradim.


Ako znaš rešenje pomozi. Hvala još jedanput!

procedure TForm1.PrepareSendMessage(Sender: TObject);
type PSingle= ^Single;
var TmpStream: array of byte;
MyStream: TMemoryStream;
P: Pointer;
PS : PSingle;
SingleArray: array[0..3] of byte;
DuzinaPoruke: Integer;
BrojByte,i: Integer;
Vrijednost: Single;
BrojMreza: Integer;
begin
// duzina poruke = 3 byte zaglavlja +
// + 1 byte koji oznacava broj analognih mjerenja +
// + (NumberAnMjerenja*4) byte koji znace n mjerenja sa po 4 byte +
// + 1 byte koji oznacava broj digitalnih mjerenja +
// + (NumberDiMjerenja) byte koji znace n mjerenja sa po 1 byte +
// + 1 byte koji oznacava broj digitalnih mjerenja sa 2 byte
// Struktura zaglavlja je
// 1 byte vrijednost 1 - oznacava da je u pitanju mjerenje
// 1 byte vrijednost 8 - oznacava da je u pitanju razmjena sa centrima
// 1 byte vrijednost DeviceID - oznacava broj uredjaja koji salje poruke

for i:=0 to (NumberAnItems-1) do
begin
Vrijednost_Labela.caption:=(ItemAnalogni.Text);
end;

DuzinaPoruke:=3+1+(NumberAnItems*5)+1+(NumberDiItems*2)+1;
SetLength(TmpStream,DuzinaPoruke);

TmpStream[0]:=1;
TmpStream[1]:=8;
TmpStream[2]:=DeviceID;
TmpStream[3]:=NumberAnItems;
BrojByte:=4;
For i:=0 to (NumberAnItems-1) do
begin
TmpStream[BrojByte]:=i;
P:=@SingleArray;
PS:=PSingle(P);
if ItemAnalogni.Text<>'' then
begin
try
Vrijednost:=StrToFloat(ItemAnalogni.Text);
except
on EConvertError do Vrijednost:=0;
end;
end;
PS^:=Vrijednost;
TmpStream[BrojByte+1]:=SingleArray[0];
TmpStream[BrojByte+2]:=SingleArray[1];
TmpStream[BrojByte+3]:=SingleArray[2];
TmpStream[BrojByte+4]:=SingleArray[3];
BrojByte:=BrojByte+5;
end;

for BrojMreza:=0 to (NumberNetworkSend-1) do
begin
MyStream := TMemoryStream.Create;
try
MyStream.Write(TmpStream[0],DuzinaPoruke);
UDPSender[BrojMreza].SendStream(MyStream);
finally
MyStream.Free;
end;
end;
end;

NS
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.197.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: Razmena podataka preko interneta!20.01.2005. u 09:58 - pre 234 meseci
lakse je kao StringStream...on ti sa jedne strane omogucava da binarno citas i pises, a sa druge mozes i string.
tako da pre nego sto saljes kazes nesto kao
Code:

f := TStringStream.Create;
f.Write(Buffer, Length);
Socket.SendText(f.DataString);
f.Free;

a kad primas (valjda na OnRead ili tako nesto)
Code:

f := TStringStream.Create;
f.Write(Socket.ReceiveText, Length(Socket.ReceiveText));
//obrada
f.Free;

u principu je svejedno, kako hoces
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Razmena podataka preko interneta!

[ Pregleda: 4471 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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