AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Probleme mit Socket Fehler 10061 nur unter Vista?
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Socket Fehler 10061 nur unter Vista?

Ein Thema von SimStar001 · begonnen am 21. Mai 2009 · letzter Beitrag vom 22. Mai 2009
Antwort Antwort
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#1

Probleme mit Socket Fehler 10061 nur unter Vista?

  Alt 21. Mai 2009, 12:31
Hallo

ich habe folgende Klasse erstellt und diese funktioniert bei mir super! Habe das Tool dann auch auf zwei Rechnern laufen lassen und es klappt tadellos. Allerdings sind da jeweils Win XP drauf.

Delphi-Quellcode:
unit Livetrack;

interface

uses IdFTP, IdHTTP, Classes, DateUtils, SysUtils, windows, dialogs;

//(const CallSign : String; const Departure_Airport : String; const Arrival_Airport : String; const Current_Speed : String; Current_Altitude : String; const Current_Waypoint : String; const Planned_Route : String; const Squawk : String; const Aircraft : String ; const WakeTurbulanceClass : String) : boolean;

type TFTP = class(TIDFTP)
    end;

type THTTP = class(TIDHTTP)
    end;

type TLivetrack = class(TObject)
      private
      {private Vars}
      FHTTP : THTTP;
      FFTP : TFTP;
      FCacheDirectory : string;
      FFTPHost : String;
      FFTPDirectory : String;
      FFTPLoginName : String;
      FFTPPassword : String;
      FHTTPUrl : String;
      FFileName : String;
      FVID : String;
      FInfoDaten : TStringList;
      FData : TStringList;
      {Set Procedures}
      procedure SetFTPHost(Host : String);
      procedure SetFTPLoginName(LoginName : String);
      procedure SetFTPPassword(Password : String);
      procedure SetVID(VID : String);

      {get Functions}
      function GetFTPHost : String;
      function GetFTPLoginName : String;
      function GetFTPPassword : String;

      public
      {Functions}
      constructor create(const CacheDirectory : String; const FTPHost : string; const FTPDirectory : string; const FTPLoginName : string; const FTPPassword : string; const HTTPUrl : String; const FileName : String; const VID : string); overload;
      constructor create(const CacheDirectory : String; const FTPHost : string; const FTPDirectory : string; const FTPLoginName : string; const FTPPassword : string; const HTTPUrl : String; const FileName : String); overload;
      destructor destroy ; override;

      {Normal Functions}
      function download(TimeOut : Integer) : boolean;
      function upload(TimeOut : Integer) : boolean;
      function refresh (const RealName : String; const ATC_Position : String; const Tool : String): boolean;

      {InfoDaten Functions and Procedures}
      procedure AddInfoDaten(const CallSign : String; const Departure_Airport : String; const Arrival_Airport : String; const Current_Speed : String; Current_Altitude : String; const Current_Waypoint : String; const Planned_Route : String; const Squawk : String; const Aircraft : String ; const WakeTurbulanceClass : String;const Flugregel : string; const Flugart : string;const SID : String; const InitialClimb : String;const Zeit : String;const Runway : String);
      function UploadInfoDaten(TimeOut : Integer) : boolean;
      procedure ClearInfoDaten;

      {properties}
      property CacheDirectory : String read FCacheDirectory write FCacheDirectory;
      property FTPHost : String read GetFTPHost write SetFTPHost;
      property FTPDirectory : String read FFTPDirectory write FFTPDirectory;
      property FTPLoginName : String read GetFTPLoginName write SetFTPLoginName;
      property FTPPassword : String read GetFTPPassword write SetFTPPassword;
      property HTTPUrl : String read FHTTPUrl write FHTTPUrl;
      property FileName : String read FFileName write FFileName;
      property VID : String read FVID write SetVID;

      end;

implementation

{Set Procedures}

procedure TLiveTrack.ClearInfoDaten;
begin
  self.FInfoDaten.clear;
  deleteFile(pchar(self.FCacheDirectory + '\' + self.FVID + '.csv'));
end;

procedure TLivetrack.AddInfoDaten(const CallSign : String; const Departure_Airport : String; const Arrival_Airport : String; const Current_Speed : String; Current_Altitude : String; const Current_Waypoint : String; const Planned_Route : String; const Squawk : String; const Aircraft : String ; const WakeTurbulanceClass : String;const Flugregel : string; const Flugart : string;const SID : String; const InitialClimb : String;const Zeit : String;const Runway : String);
begin
  self.FInfoDaten.add(CallSign + ':' + Departure_Airport + ':' + Arrival_Airport + ':' + Current_Speed + ':' + Current_Altitude + ':' + Current_Waypoint + ':' + Planned_Route + ':' + Squawk + ':' + Aircraft + ':' + WakeTurbulanceClass + ':' + Flugregel + ':' + Flugart + ':' + SID + ':' + InitialClimb + ':' + Zeit + ':' + Runway);
end;

function TLiveTrack.UploadInfoDaten(TimeOut : Integer) : boolean;
var Stream : TMemoryStream;
begin
  result := false;

  if (self.FVID = 'none') or (Self.FVID = '') then
    exit;

  Stream := TMemoryStream.Create;

  self.FInfoDaten.SaveToStream(Stream);
  self.FFTP.Port := 21;

  if not self.FFTP.Connected then
    begin
    self.FFTP.Connect(true,TimeOut);
    if self.FFTPDirectory <> 'then
      self.FFTP.ChangeDir(self.FFTPDirectory);
    end;
  try
    self.FFTP.Put(Stream, self.VID + '.csv' , false);
    finally
      result := true;
      end;

  self.FInfoDaten.Clear;
  self.FFTP.Disconnect;
end;

procedure TLivetrack.SetFTPHost(Host : String);
begin
  self.FFTP.Host := Host;
end;



procedure TLivetrack.SetFTPLoginName(LoginName : String);
begin
  if self.FFTP.Connected then
    exit;

  self.FFTP.Username := LoginName;
end;

procedure TLivetrack.SetFTPPassword(Password : String);
begin
  if self.FFTP.Connected then
    exit;

  self.FFTP.Password := Password;
end;

procedure TLivetrack.SetVID(VID : String);
begin
  self.FVID := VID;
end;
// Ende Set Procedures

////////////////////////////////////////////////////////////////////////////////


{Get Functions}

function TLivetrack.GetFTPHost : String;
begin
  result := self.FFTP.Host;
end;

function TLivetrack.GetFTPLoginName : String;
begin
  result := self.FFTP.Username;
end;

function TLivetrack.GetFTPPassword : String;
begin
  result := self.FFTP.Password;
end;
// Ende Get Functions

////////////////////////////////////////////////////////////////////////////////


{Normal Functions}

function createTimeStamp : string;
var Time : TDateTime;
    systime : tsystemtime;
begin

  getSystemtime(systime);
  Time := systemtimetodatetime(systime);
  result := inttostr(DateTimeToUnix(Time));
end;

// *.csv - Aufbau {VID : TimeStamp : RealName : ATC Position : Tool}
function TLivetrack.refresh(const RealName : String; const ATC_Position : String; const Tool : String) : boolean;

  function datainlist(const TList : TStringlist) : integer;
    var i : Integer;
    begin
      result := -1;

      if TList.Count = 0 then
        exit;

      for i := 0 to TList.Count - 1 do
        if self.FVID = copy(TList.Strings[i],1,pos(':',TList.strings[i]) - 1) then
          begin
          result := i;
          break;

          end;
    end;
    
var Index, i : integer;
    FileName : string;
    TimeStamp : string;
begin
  result := false;
  FileName := self.FCacheDirectory + '\' + self.FFileName;

  //if (self.FVID = 'none') or (Self.FVID = '') then
   // exit;

  try
    Index := datainList(self.FData);
    TimeStamp := createTimeStamp;
    if Index = -1 then
      self.FData.add(self.FVID + ':' + TimeStamp + ':' + RealName + ':' + ATC_Position + ':' + Tool)
        else
          self.FData.strings[Index] := self.FVID + ':' + TimeStamp + ':' + RealName + ':' + ATC_Position + ':' + Tool;
    finally
      result := true;
      end;
end;

function TLivetrack.upload(TimeOut : Integer) : boolean;
var Stream : TMemoryStream;
begin
  result := false;
  self.FFTP.Port := 21;
  
 // if (self.FVID = 'none') or (Self.FVID = '') then
   // exit;

  if not self.FFTP.Connected then
    begin
    self.FFTP.Connect(true,TimeOut);
    if self.FFTPDirectory <> 'then
      self.FFTP.ChangeDir(self.FFTPDirectory);
    end;
  try
    Stream := TMemoryStream.Create;
    self.FData.SaveToStream(Stream);

   self.FFTP.Put(Stream , self.FFileName , false);
    finally
      result := true;
      end;

  Stream.Free;
  self.FData.clear;
  self.FFTP.DisconnectSocket;
  self.FFTP.Disconnect;
end;


function TLivetrack.download(TimeOut : Integer) : boolean;
var Inhalt : String;
begin
  result := false;
  self.FData.clear;
  if not self.FHTTP.Connected then
    self.FHTTP.Connect(TimeOut);

  try
    Inhalt := self.FHTTP.Get(self.FHTTPUrl + '/' + self.FFileName);
    self.FData.Text := Inhalt;
    finally
      result := true;
      end;
   self.FHTTP.DisconnectSocket;
  self.FHTTP.Disconnect;
end;


// Ende Normal Functions

////////////////////////////////////////////////////////////////////////////////

{Constructor}

constructor TLivetrack.create(const CacheDirectory : String; const FTPHost : string; const FTPDirectory : string; const FTPLoginName : string; const FTPPassword : string; const HTTPUrl : String; const FileName : String);
begin
  inherited create;

  self.FFTP := TFTP.Create(nil);
  self.FHTTP := THTTP.Create(nil);
  self.FInfoDaten := TSTringList.create;
  // Setzen der Parameter für HTTP und FTP
  self.CacheDirectory := CacheDirectory;
  self.FTPHost := FTPHost;
  self.FTPDirectory := FTPDirectory;
  self.FTPLoginName := FTPLoginName;
  self.FTPPassword := FTPPassword;
  self.HTTPUrl := HTTPUrl;
  self.FileName := FileName;
  self.VID := 'none';
  self.FInfoDaten.Create;
  self.FData := TStringlist.create;
end;

constructor TLivetrack.create(const CacheDirectory : String; const FTPHost : string; const FTPDirectory : string; const FTPLoginName : string; const FTPPassword : string; const HTTPUrl : String; const FileName : String; const VID : string);
begin
  inherited create;

  self.FFTP := TFTP.Create(nil);
  self.FHTTP := THTTP.Create(nil);
  self.FInfoDaten := TSTringList.create;
  
  // Setzen der Parameter für HTTP und FTP
  self.CacheDirectory := CacheDirectory;
  self.FTPHost := FTPHost;
  self.FTPDirectory := FTPDirectory;
  self.FTPLoginName := FTPLoginName;
  self.FTPPassword := FTPPassword;
  self.HTTPUrl := HTTPUrl;
  self.FileName := FileName;
  self.VID := VID;
  self.FInfoDaten.Create;
  self.FData := TStringlist.create;
end;
// Ende Constructor

////////////////////////////////////////////////////////////////////////////////


{Destructor}

destructor TLivetrack.destroy;
begin
  self.FFTP.Free;
  self.FHTTP.free;
  self.FInfoDaten.Free;
  self.FData.Free;

  inherited destroy;
end;
// Ende Destructor

////////////////////////////////////////////////////////////////////////////////





end.

im Hauptprogramm führe ich folgenden Code aus:
Delphi-Quellcode:
 form1.Livetrack.download(10000);
  if form1.Livetrack.VID <> 'nonethen
    form1.Livetrack.ClearInfoDaten;

  form1.Livetrack.refresh(getRealname,GetATCPosition,'EC3');
  form1.Livetrack.upload(10000);
  SetLivetrackInfos;
  form1.Livetrack.UploadInfoDaten(10000);

Nun scheint nur unter Vista der Socketfehler 10061 zu kommen und ich weiß nicht woran es liegt, da es ja bei mir auch funktioniert und ich denke, der Code ist so ganz ordentlich und ohne Fehler.

Wer kann mir helfen und weiß ne Lösung?
  Mit Zitat antworten Zitat
ulrich.b

Registriert seit: 21. Sep 2005
Ort: Kattau (AT)
79 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Probleme mit Socket Fehler 10061 nur unter Vista?

  Alt 21. Mai 2009, 13:16
Hier die frage, die an diesen stellen immer kommt: Delphi Version, Indy Version?
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#3

Re: Probleme mit Socket Fehler 10061 nur unter Vista?

  Alt 21. Mai 2009, 13:37
sorry, wenn du mir noch sagst wie ich die Indy Versio herausbekomme, dann kann ich sie Posten!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Probleme mit Socket Fehler 10061 nur unter Vista?

  Alt 21. Mai 2009, 22:25
10061? Hört sich nach Firewallproblem an. Einfach mal auf Client und Server lokale Firewall deaktivieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Probleme mit Socket Fehler 10061 nur unter Vista?

  Alt 22. Mai 2009, 05:49
Zitat von SimStar001:
Nun scheint nur unter Vista der Socketfehler 10061 zu kommen und ich weiß nicht woran es liegt, da es ja bei mir auch funktioniert und ich denke, der Code ist so ganz ordentlich und ohne Fehler.
Am einfachsten wäre doch, wenn du es selbst mit Vista debuggst. Du kannst Delphi ja einfach in einem virtuellen PC mit Vista installieren.
Sebastian Jänicke
AppCentral
  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 09:44 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