AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Socket Komponente im XE4 <-> Indy TCPClient XE7
Thema durchsuchen
Ansicht
Themen-Optionen

Socket Komponente im XE4 <-> Indy TCPClient XE7

Ein Thema von Alex_ITA01 · begonnen am 26. Feb 2015 · letzter Beitrag vom 27. Feb 2015
 
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#1

Socket Komponente im XE4 <-> Indy TCPClient XE7

  Alt 26. Feb 2015, 21:05
Hallo zusammen,
ich habe folgendes Problem.

Ein kleines Programm schickt zwei Strings über eine TCPClient Komponente zu einem Server.
Das Programm liegt in zwei Varianten vor:

1)
XE4 Version mit der TCPClient Komponente aus der Unit "Web.Win.Sockets" (TTcpClient).
RemoteHost und RemotePort werden gesetzt.
Ich prüfe mit dem Befehl "Connect" ob ich mich verbinden kann und wenn ja, dann sende ich
die beiden Strings jeweils raus.
Dieses Programm funktioniert ohne Probleme.

2)
XE7 Version mit der TIdTCPClient Komponente der mitgelieferten Indy.
Grund: Es gibt die eingesetzte Komponente aus der XE4 Version nicht mehr.
Host und Port werden gesetzt.
Ich prüfe mit dem Befehl "if Connected" ob ich verbunden bin und wenn ja, dann sende ich
die beiden Strings jeweils raus. Wenn nein, rufe ich "Connect" auf und versuche dann nochmal auf "Connected" abzufragen.
Dieses Programm funktioniert auf meinem Rechner ohne Probleme.
Leider funktioniert das Programm auf zwei anderen Rechnern nicht wie bei mir und ich weiß nicht warum.
Es treten Exceptions beim Senden des jeweiligen Strings auf.
Fehlermeldung: Die Verbindung wurde erfolgreich geschlossen.
Bei jedem Sendebefehl.
Was mich wundert, bei mir auf dem Rechner funktioniert es (habe einem anderen Rechner die IP gegeben und das Programm ncat darauf gestartet und den entsprechenden Port geöffnet. Da kommt der String an. Keine Exceptions.
Bei zwei anderen Rechnern, entstehen die genannten Exceptions und es kommt auch kein String (Text) an.
Hättet ihr eine Idee dazu?

Source Ausschnitt Programm XE4:
Delphi-Quellcode:
SocketErr := False;
try
  try
    if Connect then
    begin
      try
        SendBuf(PAnsiChar(MyStr1)^, Length(MyStr1), 0);
      except
        on E:Exception do
        begin
          //Protokollierung E.Message
          SocketErr := True;
        end;
      end;

      try
        SendBuf(PAnsiChar(MyStr2)^, Length(MyStr2), 0);
      except
        on E:Exception do
        begin
          //Protokollierung E.Message
          SocketErr := True;
        end;
      end;
    end
    else
    begin
      //Protokollierung Connect nicht möglich
    end;
  except
    on E:Exception do
    begin
      //Protokollierung E.Message
      SocketErr := True;
    end;
  end;
finally
  if SocketErr then
  begin
    //Protokollierung SocketErr erkannt
  end;

  try
    Disconnect;
  except
    on E:Exception do
    begin
      //Protokollierung E.Message
    end;
  end;
end;
Source Ausschnitt Programm XE7:
Delphi-Quellcode:
SocketErr := False;
try
  try
    if not Connected then
    begin
      try
        //Protokollierung not Connected
        Connect;
      except
        on E:Exception do
        begin
          //Protokollierung E.Message
          SocketErr := True;
        end;
      end;
    end;
  except
    on E:Exception do
    begin
      //Protokollierung E.Message
      SocketErr := True;
    end;
  end;

  try
    if Connected then
    begin
      if Assigned(TCPClient.IOHandler) then
      begin
        try
          TCPClient.IOHandler.WriteLn(MyStr1);
        except
          on E:Exception do
          begin
            //Protokollierung E.Message
            //Hier kommt die Protokollierung "Die Verbindung wurde erfolgreich geschlossen."
            SocketErr := True;
          end;
        end;

        try
          TCPClient.IOHandler.WriteLn(MyStr2);
        except
          on E:Exception do
          begin
            //Protokollierung E.Message
            //Hier kommt die Protokollierung "Die Verbindung wurde erfolgreich geschlossen."
            SocketErr := True;
          end;
        end;
      end
      else
      begin
        //Protokollierung IOHandler nicht initialisiert
      end;
    end
    else
    begin
      //Protokollierung Connect nicht möglich
    end;
  except
    on E:Exception do
    begin
      //Protokollierung E.Message
      SocketErr := True;
    end;
  end;

finally
  if SocketErr then
  begin
    //Protokollierung SocketErr erkannt
  end;

  try
    Disconnect;
  except
    on E:Exception do
    begin
      //Protokollierung E.Message
    end;
  end;
end;
Ich hoffe ihr könnt mir da weiterhelfen.
Viele Grüße
Let's fetz sprach der Frosch und sprang in den Mixer

Geändert von Alex_ITA01 (26. Feb 2015 um 21:09 Uhr) Grund: falsche Überschrift
  Mit Zitat antworten Zitat
 


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 22:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz