Autor Beitrag
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Di 18.02.03 10:50 
Hi,

da ich gelesen habe, dass UDP schneller als TCP ist. Habe ich nun einige Newbie-Fragen (beziehend auf InDy 9):
  • Was kann UDP im Vergleich zu TCP besser/schlechter?
  • Wozu dient die BroadCast-Funktion, die sowohl Client und Server haben?
  • Wie werden Daten gesendet/empfangen?
  • Wie verbinde ich den Client zum Server?

Gibt es ein Tuturial?

maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Di 18.02.03 15:17 
Zitat:
Was kann UDP im Vergleich zu TCP besser/schlechter?


UDP ist ein verbindungsloses Protokoll, d.h. der Three-Way-Handshake fällt weg. Die Daten werden einfach ins Netz geschickt, ohne auf eine Bestätigung zu warten. Das hat zwar den Vorteil, dass es schneller ist, aber die Wahrscheinlichkeit, dass ein Packet verloren geht ist größer.
TCP hingegen ist ein verbindungbehaftetes Protokoll. Die Daten kommen (fast) immer an. Der Three-Way-Handshake ist also nix anderes als etwas in der Art: "Achtung! Kommt was!" - "OK!" - "Habs empfangen!".
Ist aber wegen dieser Sicherheitsvorkehrung langsamer.

Zitat:
Wozu dient die BroadCast-Funktion, die sowohl Client und Server haben?


Mittels des Broadcast kannst du an jeden Client des Netzwerks eine Nachricht schicken. Der Broadcast ist ein Packet, dass an eine spezielle Adresse verschickt wird (z.B. 192.168.1.255). Alle Computer greifen dieses Packet ab.

Zitat:
Wie werden Daten gesendet/empfangen?


Wie ich schon mal geschrieben hab:

O'rallY hat folgendes geschrieben:
Um UPD zu nutzen, würd' ich dir die Indy-Kompos vorschlagen ([url]www.indyproject.org[/url]). Das sind TIdUPDClient u. TIdUPDServer. Der Umgang ist recht einfach. Ein Beispiel:

    IdUDPServer1 Einstellungen:
  • Active: true
  • DefaultPort: z.B. 1234
  • Falls du Broadcast benutzen willst: BroadcastEnabled: true

    IdUDPClient1 Einstellungen:
  • Port: z.B. 1234
  • Falls du Broadcast benutzen willst: BroadcastEnabled: true

Die Unit IdSocketHandle muss noch eingebunden werden :!:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
   RecText: string;
begin
   SetLength(RecText, AData.Size);
   AData.ReadBuffer(PChar(RecText)^, AData.Size);
   ShowMessage(ABinding.PeerIP + ' hat "' + RecText + '" gesendet.');
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   IdUDPClient1.Active := true;
   IdUDPClient1.Send('Hello World!');
   IdUDPClient1.Broadcast('Ich bin ein Broadcast!', 1234); // hier muss auch der Port angegeben werden
   IdUDPClient1.Active := false;
end;



Zitat:
Wie verbinde ich den Client zum Server?


Wie ich schon erklärt hab: Gar nicht! ;)

Hab ich dir helfen können?

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
maxk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Di 18.02.03 18:18 
Geholfen hat das auf jeden Fall!
:D :)

Habe ich das richtig verstanden, Broadcaste ich, kann das jeder im Subnet lesen? Falls ja, habe ich das schon ewig gesucht.

Also Danke

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Mo 24.02.03 11:51 
Jawoll, hast du vollkommen richtig verstanden :wink:

Indeterminatus.

_________________
_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---