AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy oder WinSock für Netzwerkanwendungen
Thema durchsuchen
Ansicht
Themen-Optionen

Indy oder WinSock für Netzwerkanwendungen

Ein Thema von Jackie1983 · begonnen am 16. Feb 2008 · letzter Beitrag vom 19. Feb 2008
Antwort Antwort
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Indy oder WinSock für Netzwerkanwendungen

  Alt 16. Feb 2008, 14:35
hi,

möchte gern ein (noch) kleines Netzwerkprogramm programmieren. Es werden nur Werte und Texte versendet.

Womit würdet ihr ein Netzwerkprogramm programmieren. Mit den Indys oder mit WinSock.
Ich weis Indy baut auf WinSock auf.

Nur von Indy habe ich keine Ahnung und mit Winsock habe ich schon einige Anwendungen programmiert.

Habe schon mal mit Indy eine Anwendung programmiert aber irgend wie hat das nicht funktioniert. Der Server oder der Client ist immer eingefroren.

Wäre für einpaar Tipps dankbar!
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Indy oder WinSock für Netzwerkanwendungen

  Alt 16. Feb 2008, 14:56
die WinSocket-komponenten haben nur eine begrenzte Anzahl von Zeichen, die gleichzeitig versendet werden können. (bei mir sind das 8192 Byte). Das Problem bei längeren Zeichenketten ist das zusammenfügen...
bei Indy hast du das Problem nicht, da es schon gemanaged wurde...

kleines Beispiel für Indy

Server
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AThread: TidPeerThread)
var befehl: string;
begin
befehl := Athread.Connection.ReadLn;
if Copy(befehl, 1, 3) = 'SCRthen
begin
  // zum Beispiel einen Screenshot mit einem Stream senden mittels
  AThread.Connection.WriteStream(Stream);
  // zum einfacheren abfragen auf der Clientseite:
  AThread.Connection.disconnect;
end;
if Copy(befehl, 1, 3) = 'TEXthen
  Athread.Connection.WriteLn('Text');
  // Bei einfachen Zeichenketten ist das nicht so umständlich
end;
end;
hier ist so ganz nebenbei noch zu empfehlen, den Execute-Block für ThreadSave in einen TCriticalSection-Block zu stecken (.Enter / .Leave)

Client
Delphi-Quellcode:
procedure Get;
begin
// TCPClient sollte schon verbunden sein
IdTCPClient1.WriteLn('SCREEN');
while IdTCPClient1.Connected do
IdTCPClient.ReadStream(Stream, -1, true) // Warten bis disconnect siehe oben
//...

IdTCPClient1.WriteLn('TEXT');
showmessage(IdTCPClient1.ReadLn);
end;
bei WinSockets gehts beim Server ähnlich. beim Client läuft das lesen über eine extra Prozedur, wesshalb der Programmablauf etwas unübersichtlich wird und alle Antworten in der selben Prozedur, die durchaus mal 800 mal hintereinander aufgerufen werden kann, behandelt werden.

rollstuhlfahrer
Bernhard
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#3

Re: Indy oder WinSock für Netzwerkanwendungen

  Alt 16. Feb 2008, 15:05
danke, für das kleine Beispiel das hilft mir schon mal weiter.

Aber es könnte vorkommen das ich alle 10 oder 30 Sekunden ein befehl schicke.
Dann kann ich doch nicht immer die Verbindung aufbauen und wieder schließen oder?
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Indy oder WinSock für Netzwerkanwendungen

  Alt 17. Feb 2008, 11:50
Zitat von Jackie1983:
Dann kann ich doch nicht immer die Verbindung aufbauen und wieder schließen oder?
Nein, die Verbindung kann bestehen bleiben. Bei Streams musst du dir dann halt einen anderen weg ausdenken, bei Zeichenketten (strings) kann die Verbindung ruhig offen bleiben. Das Management ist hier wichtiger. Indy(TCP) ist es egal, was über die Leitung läuft, solange der restliche Programmablauf stimmt.

rollstuhlfahrer
Bernhard
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#5

Re: Indy oder WinSock für Netzwerkanwendungen

  Alt 19. Feb 2008, 21:32
habe es mit indy programmiert, so das alles bestens funktioniert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz