Downloade information fra en server

Tags:    delphi

<< < 12 > >>
Jeg er i gang med at lave en Mesenger men jeg har et problem hvordan kan jeg downloade informationer fa en Tcp server? uden at den skal sende det til mig??

Er det mugligt?
Vis ikke er der så en anden vej?

på forhånd tak





12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Jeg har tænkt på at gøre det som Emil Melgaard foreslog men så opstår der et problem hvad med folk der har en Router de kan IKKE modtage de beskeder med mindre de Aktivere NAT funktionen i Routeren.

Jeg vil helst undgå at bruge en HTTP server.

Nogen der har en ide??


Det burde de godt kunne med tcp hvis serveren har åbne porte.

Emil Melgaard
emil.melgaard@private.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk



Jeg er i gang med at lave en Mesenger men jeg har et problem hvordan kan jeg downloade informationer fa en Tcp server? uden at den skal sende det til mig??

Er det mugligt?
Vis ikke er der så en anden vej?

på forhånd tak




Når du siger den skal downloade det hvad mener du så

Og hvilken slags information er det

Hvis det aldrig bliver ændret kunne du gemme det i en fil på en webserver og så downloade det derfra eller lign




Når du siger den skal downloade det hvad mener du så

Og hvilken slags information er det

Hvis det aldrig bliver ændret kunne du gemme det i en fil på en webserver og så downloade det derfra eller lign


Det er en online liste hvor folk loger ind med en Tcp forbindelse eller lignende og så skal mit Program downloade en onlinliste fra serveren

Håber du fårstår




Når du siger den skal downloade det hvad mener du så

Og hvilken slags information er det

Hvis det aldrig bliver ændret kunne du gemme det i en fil på en webserver og så downloade det derfra eller lign

Det er en online liste hvor folk loger ind med en Tcp forbindelse eller lignende og så skal mit Program downloade en onlinliste fra serveren

Håber du fårstår


Det giver ikke meget mening... hvilket type server skal du have hvad fra?



Jeg er i gang med at lave en Mesenger men jeg har et problem hvordan kan jeg downloade informationer fa en Tcp server? uden at den skal sende det til mig??

Er det mugligt?
Vis ikke er der så en anden vej?

på forhånd tak



Hvorfor kan programmet ikke bede serveren om listen og så kan serveren sende den?

Emil Melgaard
emil.melgaard@private.dk
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk



Jeg er i gang med at lave en Mesenger men jeg har et problem hvordan kan jeg downloade informationer fa en Tcp server? uden at den skal sende det til mig??

Er det mugligt?
Vis ikke er der så en anden vej?

på forhånd tak


Hej,

Det kommer lidt an på hvordan du har tænkt dig at lave din server.
To ideer til hvordan du kan gøre det:

1) Hvis du har server plads med f.eks. adgang til PHP og mySQL så kunne du jo lave et script som kan logge ind/ud, sende en besked samt gi' en liste af online brugere. Bruger data, beskeder samt online info kan du gemme i databasen. På denne måde skal din klient kun kommunikere via HTTP (over TCP/IP). Så kan du evt. overveje om 2 klienter skal kunne kommunikere direkte med hinanden, hvilket betyder at en klient også skal indeholde en TCP/IP server (evt. dine egen protokol).

2) Lige som den første løsning men hvor du selv har udviklet en TCP/IP server som indeholder den samme funktionalitet. I denne løsning kan du så selv lave din egen protokol som klienterne skal bruge. Dette kræver dog at TCP/IP serveren ligger på en maskine som har en fast forbindelse til nettet.

Generelt er det smart at bruge en "connectionless" strategi. Altså, opret en forbindelse, hent data og luk forbindelsen (som HTTP protokollen). Grunden til dette er at hvis nu du har 1000 brugere og de alle sammen har en forbindelse til din server (og holder fobindelsen), så vil din maskine være meget belastet. Hvor i mod hvis alle opretter en forbindelse (og henter data) og lukker den lige efter så har du måske kun 200 forbindelser samtidigt. Hvilket betyder en meget mindre belastning.


For at kommunikere via TCP/IP og HTTP kan jeg anbefale en rigtig god (gratis) komponent pakke.
Den hedder ICS og kan hentes her:
http://overbyte.delphicenter.com/frame_index.html?redirTo=/products/ics.html

/Michael



Jeg har tænkt på at gøre det som Emil Melgaard foreslog men så opstår der et problem hvad med folk der har en Router de kan IKKE modtage de beskeder med mindre de Aktivere NAT funktionen i Routeren.

Jeg vil helst undgå at bruge en HTTP server.

Nogen der har en ide??



Jeg vil helst undgå at bruge en HTTP server.

Nogen der har en ide??

Hej,

Da du nu siger at du ikke vil bruge HTTP, så må vi gå ud fra at du har en maskine med fast forbindelse til nettet hvor du ville ligge en TCP/IP server (som du selv har udviklet)..eller?

For ellers kan jeg ikke se hvordan du vil lave en messenger. Du skal ha' et udgangspunkt som alle dine klienter kan snakke i gennem. Dette behøver (som jeg ser det) at være en maskine med en fast adresse.

Hvis du ikke har tænkt dig at gøre det på denne måde, så er jeg meget nysgerrig for at høre hvordan du har tænkt dig at løse denne problematik!

Angående, hvordan du skal få en liste over online klienter så er den eneste rigtige måde at bede serveren om at sende dig listen (som Emil så rigtigt skriver).

En anden ting du også bør overveje er at udvikle din egen protokol, hvor med dine klienter snakker sammen. Dette giver dig mulighed for f.eks. filoverførelse, kryptering osv.

PS.
Jeg spørger kun fordi jeg er pisse nysgerrig og interesseret i hvordan du vil løse opgaven :)

/Michael.




Ind til videre har jeg tænkt mig at bruge TCP. (det er nok også det nemmeste )

Men jeg har et problem hvordan kan jeg sende flere informationer over samme forbindelse???

EX:
Login: ja
Navn: Darkfighter
Pass: 12345
Ip: 23.344.23.23

Og så skal serveren dele Informationerne ud flere fo4rskællige steder i Server programmet hvordan gør jeg det???

Jeg ved det er muligt får andre programmer må jo også gøre det ikk??

nogen der kan hjælpe???

PS: Michael Skovslund?? Hvad mener du med at lave min egen protokol og hvordan gør jeg så det??

Håber der er nogen der vil hjælpe mig...



Ind til videre har jeg tænkt mig at bruge TCP. (det er nok også det nemmeste )

Men jeg har et problem hvordan kan jeg sende flere informationer over samme forbindelse???

EX:
Login: ja
Navn: Darkfighter
Pass: 12345
Ip: 23.344.23.23

Og så skal serveren dele Informationerne ud flere fo4rskællige steder i Server programmet hvordan gør jeg det???

Jeg ved det er muligt får andre programmer må jo også gøre det ikk??

nogen der kan hjælpe???

PS: Michael Skovslund?? Hvad mener du med at lave min egen protokol og hvordan gør jeg så det??

Håber der er nogen der vil hjælpe mig...

Hej,

Jeg tror vi snakker lidt forbi hinanden.

TCP/IP er, kort sagt, et transportlag som giver dig mulighed for a skabe en forbindelse fra A til B.
A er en klient og B en server. B skal, som server, "lytte" på en port som A så skal forbinde sig til.

Når der er skabt en forbindelse så er det at protokollen kommer ind i billedet.
En protokol er en specifikation af hvordan dine dataer skal sendes frem og tilbage.
Som eksempel kunne du bruge XML (eller noget andet) som protokol.

Lad os sige at du vil bruge XML.
Så kunne du sende data fra A (Klienten) i følgende format:
Fold kodeboks ind/udKode 

Som du nok kan se ligner XML meget HTML syntaksen.
Der er nu kun et problem tilbage....Hvordan ved B at A er færdig med at sende data???
Her kan man f.eks. bruge HTTP eller selv finde på noget.
Alt hvad HTTP gør er at pakke data ind i en header, så klienten (eller serveren) ved hvor meget data der skal modtages. Det er jo også denne funktionalitet som du leder efter :)

Lad os prøve at lave en selv.
Men før vi går i gang bør vi nok se på hvilke informationer som vi har brug for i vores header.
1. Data længden (ikke medregnende headeren).
2. Data transport type (forklaring lidt senere).
3. Header slut Tag (eller Data start tag :)).

Okay, så har vi defineret hvilke elementer vi vil ha i headeren. Så er det vist på tide at specificere hvert enkelt element og deres værdier. Først lad os sige at headeren er tekst orienteret (fylder lidt mere men nemmere at forstå og debugge).

Data længde (1):
Identificeret ved elementet "Length: ".
Efter "Length: ", angives længden af de data som skal sendes.

Data transport type (2):
Identificeret ved elementet "Transport: ".
Efter elementet, angives der hvilken type transport vi vil bruge.
Lad os bruge 2 typer:
- PLAIN:
Normal tekst sendes i en stor klump.
- BLOCK:
Data sendes i mindre bidder (bruges hvis du ikke kender størrelsen af dine data som skal sendes).

Header slut tag (3):
Her bruger vi en konstant tekst som angiver at headeren er slut.
Lad os bruge "HEADER_END" som slut tag.

Så vil det se nogenlude sådan her ud når der sendes data:
Fold kodeboks ind/udKode 


Hvis vi nu tager XML eksemplet og putter det ind i vores header:
Fold kodeboks ind/udKode 

Eks. ovenfor viser hvad klienten (A) sender til serven (B) for at logge ind.
B svarer så tilbage til A for at fortælle at A er logget ind:
Fold kodeboks ind/udKode 
<< < 12 > >>
t