AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Daten per TCP/IP übertragen
Thema durchsuchen
Ansicht
Themen-Optionen

Daten per TCP/IP übertragen

Ein Thema von backdraft · begonnen am 2. Dez 2008 · letzter Beitrag vom 4. Dez 2008
Antwort Antwort
Seite 2 von 2     12   
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Daten per TCP/IP übertragen

  Alt 3. Dez 2008, 09:30
Zitat von mkinzler:
Hast du dir mal die Beispeile zu ICS angesehen? Vorallem das TnSrv Bsp sollte doch passend sein
ich schau mich gerade mal durch das synapse, das scheint ganz gut zu sein, und auch einfach.
Oliver
  Mit Zitat antworten Zitat
HeinzJ

Registriert seit: 17. Aug 2007
Ort: Bremen
84 Beiträge
 
Delphi 2007 Architect
 
#12

Re: Daten per TCP/IP übertragen

  Alt 3. Dez 2008, 10:15
Mir fällt dazu noch das Stichwort Webservice an. Delphi hat iho doch dementsprechende Demos.
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Daten per TCP/IP übertragen

  Alt 4. Dez 2008, 12:28
Hmmmm, ich hab jetzt alles mal auf das Synapsis umgebaut, und wieder die gleichen Fehler bekommen.

Meine Vermutung war falsch, dass es am TCP lag. Das Problem ist ganz woanders. Es liegt am Thread.

Vielleicht kann mir da einer weiter helfen.

Das Szenario war bei allen TCP Sachen gleich.
- Es läuft ein Hauptprogramm, was ein Log-Fenster pro Client führt
- Es läuft ein TCP-Server im Thread
- Pro Client wird ein Thread angelegt

Wenn eine Verbindung in den TCP-Server reinkommt, erzeuge ich ein Client und lege ich ein neues Tabsheet auf meinem Hauptfenster an, an das ich den ClientThread übergebe.
Ich denke, das Log-Fenster hängt dann oder meldet komische Fehler, weil der TCP-Server das Fenster erzeugt, und danach wieder in seinen "Ich warte auf Verbindungen" Modus geht.
Der Client Thread macht ja auch das selbe, er wartet auf Daten.

Nachdem ich mich in Thread-Handling ein bisschen eingearbeitet habe, habe ich Events gefunden. Diese soll man über Syncronize aufrufen können, damit nicht der TCP-Server, sondern der Hauptthread das Fenster öffnet.

Leider klappt das ganze aber auch nicht. Er bleibt beim Aufruf des Sync Befehls stehen.
Zusätzlich habe ich, weil der Sync ja nur einen Pointer übergeben bekommt, habe ich die Daten, die ich an den Hauptthread schicken will, mir im TCPServer Thread gemerkt (im Private Bereich), und dann in der Funktion wieder aufgerufen.


Delphi-Quellcode:
constructor TMainUnit.Create(aOwner: TComponent);
begin
  inherited;
  FTCPServer := TiBDITCPServer.Create;
  FTCPServer.OnClientAdded := CreateLogWindow;
end;
Delphi-Quellcode:
procedure TiBDITCPServer.Execute;
var
  vClientSock: TSocket;
  vClient: TiBDITCPServerConnectionItem;
begin
  FActive := True;
  FSocket.CreateSocket;
  FSocket.setLinger(true, 10);
  FSocket.bind('0.0.0.0', '4000');
  FSocket.listen;
  repeat
    if terminated then break;
    if FSocket.canread(cDefaultCanReadTime) then
      begin
        if FSocket.lastError = 0 then
          begin
            vClientSock := FSocket.accept;
            vClient := TiBDITCPServerConnectionItem.Create(Self, vClientSock);
            FUpdateClient := vClient;
            Synchronize(SyncClientAdded);
          end;
      end;
      CheckConnections;
  until false;
  FActive := False;
end;
Delphi-Quellcode:
procedure TiBDITCPServer.SyncClientAdded;
begin
  if Assigned(FOnClientAdded) then FOnClientAdded(Self, aClient);
end;
Ich hab auch mal die Ganze TCPServer.pas mit angehangen.
Angehängte Dateien
Dateityp: pas ibdi_tcpserver_633.pas (8,3 KB, 20x aufgerufen)
Oliver
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:27 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