1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Andy

Beiträge von Andy

  • arbeiten mit Ini-Dateien

    • Andy
    • 6. Februar 2009 um 18:12

    Hallo,
    bin grade bissl über die Excel-Daten gestolpert. Hab seit mehr als 10 Jahren kein Excel mehr. Für den Wert einer MS-Office-Lizenz bekam ich damals 5(!) Staroffice Lizenzen (die übrigens heute noch problemlos laufen).
    Daher klinke ich mich hier aus und übergebe an die DCOM-Spezialisten.

    Weiter oben im Thread war doch von einer *.csv-Datei die Rede? Damit hätte ich kein Problem gehabt :rolleyes:

    ciao
    .Andy

  • arbeiten mit Ini-Dateien

    • Andy
    • 6. Februar 2009 um 17:07

    Hallo,

    Gorgo nicht böse gemeint, aber du kennst den Spruch von wegen Würmer aus der Nase ziehen? ;)
    Es wäre alles viel einfacher für alle Beteiligten, wenn du in deinen Startpost 2 Dinge integriert hättest:

    Zitat

    1. DAS hab ich....*.INI Datei mit folgendem Format
    [kunden]
    kunde1=adam
    kunde2=berta
    Kunde3=cicero
    ....

    2. DA will ich hin.....Excel Tabelle erstellen mit
    $app.Cells(1,1).Value = @MDAY &"." & @MON &"." &@YEAR & " um " & @HOUR &":" &@MIN &"Uhr"
    $app.Cells(2,1).Value = adam
    $app.Cells(2,2).Value = berta
    $app.Cells(2,3).Value = cicero
    $app.Cells(2,4).Value = nocheiner
    ......
    Wie könnte eine Lösung aussehen?

    Alles anzeigen


    Dann wäre die gesamte Aktion sicher in wenigen Stunden vom Tisch gewesen....
    Ok, zum Ablauf:
    Du brauchst eine Schleife innerhalb du die Kundennamen in der *.Ini-Daten nacheinander ausliest.
    Diese eingelesenen Daten sollen in derselben Schleife in eine Excel-Tabelle geschrieben werden.
    Solange weitermachen, bis keine weiteren Daten mehr in der *.ini sind.

    Programm:

    [autoit]

    *.ini-Datei öffnen und Kundenanzahl rausfinden
    *.excel-Datei öffnen und Datum und Uhrzeit in Zelle (1,1)ff schreiben
    Schleife: for $index=1 to kundenanzahl
    Schlüssel[$index] lesen (falls du den überhaupt brauchst...)
    Kunde[$index] aus *.ini-datei lesen...
    ...und in der *.excel-Datei in Zelle(1,$index+1) schreiben
    schleife wiederholen bis alle Kundennamen in der *.excel-Datei stehen
    *.ini- und *.excel-Dateien schliessen

    [/autoit]

    Jetzt müsstest du es schaffen :o) :rock:
    ciao
    Andy

  • Ist dieses vorhaben umsetzbar?

    • Andy
    • 5. Februar 2009 um 11:04

    Hallo,
    ab besten postest Du immer die nicht funktionierenden Ausschnitte deines Scripes.

    Also Irfanview soll die Datei(en) konvertieren:
    Aus der Irfanview-Hilfe: i_view32.exe c:\test.bmp /convert=c:\test.jpg
    Die Umwandlung erfolgt ohne Bildschirmausgabe!

    An Irfanview übergebene Parameter sind erstens die ursprüngliche Bilddatei($QUELLE), am besten incl. Pfad. Die liefert das Script mit $cmdline[$i].
    Zweiter Parameter ist die $ZIEL-Datei. Diese hat denselben Dateinamen wie die Quelle, allerdings in einem anderen Verzeichnis und mit einer anderen Dateiendung, du willst ja die *.BMP in eine *.JPG umwandeln. Ich gehe davon aus, dass Du mittels der Stringoperationen den Namen des Zielverzeichnisses und des Ziels (Endung soll ja JPG sein) bestimmen kannst. Wenn nicht, dann Fragen....

    Autoit startet Irfanview mittels RUNWAIT-Befeh:

    [autoit]


    Runwait(@ComSpec & " /c " & "i_view32.exe " & $QUELLE & " /convert=" & $ZIEL, "")

    [/autoit]

    Irfanview sollte dazu im Scriptverzeichnis stehen. Zum Testen solltest du nach dem Runwait ca 5 Sekunden warten, um dir ggf die Fehlermeldungen anzusehen. Wenn alles läuft, kannst du das runwait-Fenster mittels @SW_Hide unsichtbar machen.

    ciao
    .Andy

  • arbeiten mit Ini-Dateien

    • Andy
    • 5. Februar 2009 um 09:18

    Hallo,

    sollte eigentlich nun alle Klarheiten beseitigen^^

    Spoiler anzeigen
    [autoit]

    Dim $kunde[10],$Schluessel[10] ;je nach grösse der [Kunde]-sektion in der *.INI

    [/autoit] [autoit][/autoit] [autoit]

    ;Inidatei erstellen
    $inidatei="Kundetest.ini"

    [/autoit] [autoit][/autoit] [autoit]

    filedelete($inidatei)
    $sData = "kunde1=adam"&@crlf&"kunde2=berta"&@crlf&"kunde3=caesar"
    IniWriteSection($inidatei, "Kunde", $sData)

    [/autoit] [autoit][/autoit] [autoit]

    ;Daten aus *.ini auslesen
    $Read = IniReadSection(@ScriptDir & "\kundetest.ini", "Kunde") ; z.B. Iniread()
    For $index =1 To $Read[0][0]
    $schluessel[$index] = $Read[$index][0]
    $kunde[$index] = $Read[$index][1]
    msgbox(0,"",$schluessel[$index]&" "&$Kunde[$index])
    Next

    [/autoit]
  • Ist dieses vorhaben umsetzbar?

    • Andy
    • 5. Februar 2009 um 08:49

    Hallo,
    so wie es aussieht, möchtest du per Drag&Drop die Dateien auf/in dein Programm ziehen.

    Mittels des Arrays $cmdline[] ist das einfach möglich. Dabei werden die markierten und "gedroppten" Dateien ab $cmdline[1] bis $cmdline[anzahlderdateien] abgespeichert. In $cmdline[0] findet man die Anzahl der Dateien bzw. übergebenen Parameter.

    Das comilierte Autoitscript kann man einfacherweise in in die Schnellstartleiste legen, dann könntest du die markierten *BMP-Dateien dort "fallenlassen" und/oder eine Verknüpfung des Scripts im "SendTo"-Ordner anlegen. Dann kann man die Dateien markieren, rechtsklicken, im folgenden Kontextmenü "Senden an" anwählen und dort dann dein Script anwählen.

    Spoiler anzeigen
    [autoit]


    DIM $dropedfiles[100] ;es können sowieso nur maximal 60 Parameter einer datei übergeben werden

    [/autoit] [autoit][/autoit] [autoit]

    if $cmdline[0]=0 then ;es ist kein Parameter(datei) übergeben worden
    msgbox(0,@scriptname,"Bitte im Windows-Explorer eine oder bis zu 60 Dateien auswählen und rechtsklicken." &@CRLF&"Im darauf folgendenden Kontextmenü bitte ""Senden an"" anwählen, dann in der folgenden Liste auf "&@ScriptName&" klicken!"&@CRLF&@CRLF&"Es ist auch möglich, eine oder mehrere Dateien auf das Programmicon zu ziehen (drag&drop).")
    $ret=filecreateshortcut(@ScriptFullPath,@UserProfileDir&"\sendto\"&@scriptname) ; Verknüpfung im SendTo-Ordner anlegen
    if $ret=0 then msgbox(0,"Fehler","Fehler beim Schreiben der Verknüpfung in den "&@userprofiledir&"\sendto\ -Ordner")
    exit
    endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $anzahldateien=$cmdline[0] ;anzahl der per drag&drop oder sendto übergebenen dateien

    [/autoit] [autoit][/autoit] [autoit]

    for $i=1 to $anzahldateien ; dateinamen aus pfad extrahieren
    $location = StringInStr($cmdline[$i],"\",0,-1) ;position des letzten \ im pfad...
    $dropedfiles[$i]=StringTrimLeft($cmdline[$i],$location) ;...danach kommt der dateiname
    msgbox(0,"",$dropedfiles[$i])
    next

    [/autoit]

    Damit die Verknüpfung in den SendTo-Ordner angelegt wird oder die Hilfe angezeigt wird, einfach das Script ohne Parameter starten.

    ciao
    .Andy

  • arbeiten mit Ini-Dateien

    • Andy
    • 4. Februar 2009 um 09:54

    Hallo Gorgo,

    bitte beschreibe Dein Problem etwas genauer. Ich habe jetzt den gesamten Thread 3x komplett durchgelesen und könnte es sein daß Du die Variablen in der FOR-Schleife benutzen willst, um nicht die 1,2,3,4,...Maximaleanzahlkunden schreiben zu müssen?

    Also in etwa so?

    [autoit]

    For $index =1 To $maximaleanzahlkunden ;wäre z.B. die Anzahl der Zeilen deiner *.INI-Datei, in jeder Zeile steht ein Kunde
    $kunde[$index] = _hierliestdieschleifedatenvonirgendwoher() ; z.B. Iniread()
    Next

    [/autoit]


    Im Feld $kunde[] wären nun alle Kunden aus der *.INI Datei enthalten.

    Um die jetzt alle als *.CSV abzuspeichern könnte man das so machen

    [autoit]

    For $index =1 To $maximaleanzahlkunden ;wäre z.B. die Anzahl der Zeilen deiner *.INI-Datei, in jeder Zeile steht ein Kunde
    _schreibedatenirgendwohin($kunde[$index] & ",") ; z.B. in die *.CSV
    Next

    [/autoit]

    Inhalt der *.CSV wäre somit
    Kunde1,kunde2,kunde3,kunde4......

    ciao
    Andy

  • Gui Problem

    • Andy
    • 4. Februar 2009 um 09:14

    Hallo,

    Zitat

    ja klar ist pixel glei pixel


    wo hast du diese Information denn her?
    Die Darstellung des pixels ist natürlich abhängig von seinem Seitenverhältnis. Und erst wenn das Seitenverhältnis(4:3 oder 16:9 oder 16:10 oder oder oder) gleich ist, dann ist bei gleicher Auflösung des Bildschirms auch die Darstellung des Bildschirminhalts gleich, völlig egal ob 14 zoll oder 22 zoll Bildschirmdiagonale.
    Warum werden wohl beim Abspielen von Filmen je nach Bildschirmformat diese netten, unterschiedlich dicken schwarzen Balken meist oben und unten an das eigentliche Bild gebastelt?
    Um also ein "quadratisches" GUI auch auf jedem Monitor quadratisch darzustellen, sollte nicht die eigentliche Auflösung, sondern das Seitenverhältnis des Monitors abgefragt werden....viel Spass dabei :D

    ciao
    Andy

  • winwaitactive und eingabefeld einer internetseite

    • Andy
    • 29. Januar 2009 um 11:33

    Hallo,

    kann sein dass ich grade überhaupt nicht peile um was es geht, aber Opera hat einen eingebauten Mailclient. dort acc-daten und pw eintragen und eine Sekunden nach dem Klick auf das rote "O" in der Taskleiste hat man seine Mails vor der Nase...

    ciao
    .Andy

  • TCPConnect "nebenbei"

    • Andy
    • 24. Januar 2009 um 11:14

    Hi,

    FireFlyer
    ja, klar könnte man das so machen, aber ein z.B. Portscanner checkt ja auch reihenweise Ports in kürzester Zeit. Genau solch eine "Anfrage" (incl. sofortiger Antwort) an den Server wird ja gesucht.
    *edit* Hatte Denkfehler, die Portscanner checken natürlich nicht EINEN port sondern extrem viele gleichzeitig, daher entsteht der Eindruck der hohen Geschwindigkeit, der eigentliche scan dauert natürlich auch ca 10-15 Sekunden.

    ciao
    .Andy

  • TCPConnect "nebenbei"

    • Andy
    • 24. Januar 2009 um 10:31

    Hallo,

    Das Problem wurde noch nicht gelöst...
    Ich bleibe aber am Ball!

    ciao
    .Andy

  • Mandelbrot Fraktal zoomen

    • Andy
    • 23. Januar 2009 um 09:04

    ...oder Fractint oder ein anderes hochoptimiertes Programm verwenden.
    Mit dem hier kann man auch auf langsamen Rechnern schöne "Reinzoom-Flüge" mit der Maus machen (rechts im SEARCH-Fenster)
    Aber ich glaube der Witz liegt darin, in der Minimalstversion mit ca. 50-100 Zeilen Code mit jeder beliebigen Programmiersprache solche Bilder hinzubekommen (von der Rechenzeit mal abgesehen)

    ciao
    .Andy

  • Mandelbrot Fraktal zoomen

    • Andy
    • 23. Januar 2009 um 01:28

    Moin Leuts,

    ich habe heute schon derbe geflucht, weil sämtliche 15-25 Jahre alten Disketten mit meinem MANDEL.BAS unlesbar waren. In grauer Vorzeit habe ich mit Turbo- oder Powerbasic einen feinen 4,77 Mhz IBM-PC mit 8088 und 8087 (Numerischer CoProzessor :rock: ) programmiert. Basic war für die Oberfläche, das Numbercruncen hat dann ein Inline-Assemblercode übernommen. Das Programm wurde nach der Anzahl der Takte/Schleifendurchgang optimiert. Ich weiß genau, daß die "innere" Schleife vollständig im 16 Byte-Stack des CoPro lief, d.h. Prozessor und Copro liefen Parallel^^...btw..die Platte hatte 10MB (nicht Gig^^) und Grafik war CGA (320x200x4), später EGA(640x480x16) . BS war soweit ich weiß Novell-DOS. In irgendeinem Schrank fliegt der Rechner noch rum, werde morgen mal suchen, vielleicht startet das Monster ja noch^^

    @topic
    Was in Autoit garkeinen Spass macht, ist auf das Setzen der Pixel zu warten :D

    Habe mal bissl gebastelt und das Programm erweitert, man kann nun mit Slidern während der Berechnung die Schrittweite der Pixel (nur jedes 2. oder 3. usw) und die Iterationstiefe einstellen.
    Damit man schnell "zoomen" kann wird bei einem Mausklick in die Grafik (auch während der Berechnung) eine 4-fache Vergrößerung an der Mausposition gestartet.
    Wenn man nun eine "schöne" Stelle gefunden hat, kann man diese mit voller Iterationstiefe und Schrittweite von 1 durchrechnen lassen.
    Dauert aber...^^

    Ggf. hat ja wer von den "Profis" lust, eine DLL (vielleicht in C) für die Schleife zu basteln, und so nebenbei das pixelsetzen zu beschleunigen. Habe beim googeln das da gefunden, aber von "pointern" wollte ich schon früher nix wissen^^

    ciao
    .Andy

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>
    #include <GuiSlider.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    opt("MouseCoordMode",0)

    [/autoit] [autoit][/autoit] [autoit]

    Global $width, $height, $dc , $centerx, $centery, $start, $btnstartpressed, $cx,$cy,$centerx1,$centery1,$st,$st1,$start1
    global $step, $mousepressed, $maxiteration
    $user32 = DllOpen("user32.dll")
    $gdi32 = DllOpen("gdi32.dll")

    [/autoit] [autoit][/autoit] [autoit]

    $width = 800
    $height = 600

    [/autoit] [autoit][/autoit] [autoit]

    ;Startparameter
    $maxiteration = 25 ; für 1. durchlauf, dann slider bis zu 1000
    $centerx=2
    $centery=2
    $start=4
    $step=2

    [/autoit] [autoit][/autoit] [autoit]

    ;Gui
    $Form1 = GUICreate("Apfelmännchen", $width+100,$height)
    $Farbe=pixelgetcolor(30,30)
    $Label=GuiCtrlCreateLabel("",0, 0, $width+10, $height)
    $dc = GetDC(WinGetHandle($Form1))
    guictrlcreatelabel("Steps: ",$width+20,15,60)
    $stepslider=GUICtrlCreateslider($width+10,30,80,40,BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS, $TBS_ENABLESELRANGE))
    GUICtrlSetLimit( -1,5,1)
    GuiCtrlSetData($stepslider, $step)
    guictrlcreatelabel("Iterationen: ",$width+20,100,60)
    $maxitslider=GUICtrlCreateslider($width+10,115,80,40,BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS, $TBS_ENABLESELRANGE))
    GUICtrlSetLimit( -1,1000,$maxiteration)
    GuiCtrlSetData($maxitslider, 25)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Bye")
    GUISetOnEvent($GUI_EVENT_PRIMARYUP,"_mousepressed") ;beim UP der linken Maustaste die func aufrufen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    while 1
    $mousepressed=0
    $begin=timerinit()
    ;Mandelbrot()
    ;$paintpixel=1 ;das bild ist am entstehen
    For $py = 0 To $height Step $step
    For $px = 0 To $width Step $step
    if $Mousepressed=1 then ExitLoop ;Maustaste wurde gedrückt, marker setzen und Berechnung verlassen
    $x0 = ( $start / $width) * $px - $centerx ;die eigentliche Berechnung der Farbe des Pixels....
    $y0 = ( $start / $height) * $py - $centery
    $x = $x0
    $y = $y0
    $iteration = 0
    While (($x * $x + $y * $y) < 4 And $iteration < $maxiteration)
    $xtemp = $x * $x - $y * $y + $x0
    $y = 2 * $x * $y + $y0
    $x = $xtemp
    $iteration += 1
    WEnd

    pix($dc, $px, $py,0xFFFFFF/$maxiteration* ($maxiteration-$iteration+1) ) ;...und die Farbe an die Koordinaten....
    Next
    If $mousepressed=1 then exitloop ;Berechnung verlassen
    Next

    WinSetTitle($form1,"","Apfelmännchen :"&int(timerdiff($begin)/1000&" Sekunden ")) ;Zeit in der Titelleiste anzeigen
    If $mousepressed=0 then ;die Grafik wurde ohne Unterbrechung fertig
    ;$paintpixel=0
    while $mousepressed=0 ;solange warten, bis linke mMustaste gedrückt
    sleep (100)
    WEnd
    endif
    GuiCtrlSetBkColor($label, $farbe)

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    func _mousepressed()
    $mousepressed=0 ;
    $pos = MouseGetPos() ;Koordinaten der Maus
    ;If $paintpixel=1 then ;Maustaste wurde innerhalb for/to gedrückt
    If $pos[0]<$width and $pos[1]<$height then ;wenn mauspos innerhalb Grafik dann
    $Mousepressed=1 ;Flag setzen
    $centerx=$centerx-$start*$pos[0]/$width ;neuer Anfang der Berechnung an der Mausposition für x...
    $centery=$centery-$start*($pos[1]-20)/$height ;...und y- Koordinate
    $start=$start/4 ;neue Fenstergröße willkürlich auf 1/4 des ursprünglichen Bildes
    else ;wenn Mauspos innerhalb der Gui aber nicht innerhalb der Grafik
    $Step=guictrlread($stepslider) ;steps von Slider übernehmen
    $maxiteration=guictrlread($maxitslider) ;und Maxiteration
    endif

    ;msgbox(0,"start",$centerx&@crlf&$centery&@crlf&$start)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func pix($dc, $x, $y, $color) ;pixel mit farbe an koordinaten setzen
    DllCall($gdi32, "long", "SetPixel", "long", $dc, "long", $x, "long", $y, "long", $color)
    EndFunc ;==>pix

    [/autoit] [autoit][/autoit] [autoit]

    Func GetDC($handle)
    $dc = DllCall($user32, "int", "GetDC", "hwnd", $handle)
    Return $dc[0]
    EndFunc ;==>GetDC

    [/autoit] [autoit][/autoit] [autoit]

    Func Bye()
    Exit
    EndFunc ;==>Bye

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Serverantwortzeit verkürzen möglich?

    • Andy
    • 14. Januar 2009 um 10:35
    Zitat von ctec

    solange Ihr die NW-Architektur / Server / Programme / Strategie / auf der anderen Seite nicht kennt, könnt ihr über mögliche Ursachen nur RATEN


    Da ich sowohl die eine, als auch andere Seite bin, gibts da nicht viel zu raten.
    Wirf dem usenet oder der Tante die dementsprechenden Brocken zu und du wirst feststellen, daß es Threads über dieses Thema gibt, die teilweise 10 Jahre alt sind. Lösungsvorschläge bzw. -ansätze Fehlanzeige. Von Dokumentationen mal ganz zu schweigen.
    Teilweise funtionierts, meistens nicht^^.
    Jedenfalls bleib ich mal am Ball, man lernt ja nie aus und Bitweises vergleichen von Transportströmen durch mehrere Schichten eines Protokolls hat ja auch was ^^. Jedenfalls bekomm ich´s raus.
    ciao
    .Andy

  • Serverantwortzeit verkürzen möglich?

    • Andy
    • 13. Januar 2009 um 18:35

    Definitiv liegts nicht am Router sondern an der....Anfrage!?

    Diverse Portscanner melden nach 1-2 Sekunden den Port bzw laufenden FTP-Server, genausoschnell auch den Fall, wenn ich den Serverprozess beende. Frage ist: Wie machen die das? ?(

  • Serverantwortzeit verkürzen möglich?

    • Andy
    • 13. Januar 2009 um 16:35

    Habe nun mal mittels Ethereal den Paketen auf den Zahn gefühlt.

    Anfrage an den ftp-Server über lokale IP, der Client sendet ein [SYN] und "merkt" sofort , daß der Server offline ist, d.h. der Server schickt NICHTS zurück

    Anfrage an den Server über I-net (Router), der Client sendet mehrere [SYN] (das wird wohl diese schon angesprochene dynamische Timeoutgeschichte sein) bis nach ca 15 Sekunden vom Server (oder Router?) ein [RST] (reset) zurückgesendet wird, was der Client auch sofort anzeigt.....Info in diesem Paket "ACKs a Segment we have not seen (lost)" d.h. doch, der Server (bzw Rechner, der den Port 21 offen hält) hat Antworten geschickt, aber vom Client nix bekommen und deshalb die Verbindung gekappt.

    Es scheint wirklich so zu sein, daß der Router (oder Provider) Antwortpakete droppen. :thumbdown: Der Sinn erschließt sich mir nicht, 15 Sekunden warten zu müssen damit die Info kommt, dass irgendein Dienst NICHT läuft...

    Werde mal in den Eingeweiden meines Routers graben ....

    ciao
    .Andy

  • Serverantwortzeit verkürzen möglich?

    • Andy
    • 13. Januar 2009 um 02:50

    Na dann frag dich mal, wozu du eine Firewall brauchst, wenn da "jeder" nach Hause telefonieren (oder pingen) kann 8)
    Natürlich muss die FW den Ping blocken, wenn du das nicht explizit freigegeben hast.

    Aber nochmal zum Topic :D
    Ping ändert nichts an meinem Problem, d.h. wenn der Rechner zwar erreichbar ist, aber der serverprozess z.b. nicht läuft.
    Habe das ganze mal auf socket-ebene getestet:

    [autoit]


    ; aus der Hilfe
    Opt("TCPTimeout",1000) ;1000 milliseconds egal welche zahl, bringt nix....
    $szIPADDRESS = "XXX.xxx.xxx.xxx" ; ip-adresse des ftp-servers
    $nport=21 ;ftp
    TCPStartup()
    $MainSocket = TCPconnect($szIPADDRESS, $nPORT) ; wenn -1, dann keine Verbindung
    msgbox(0,"mainsocket",$mainsocket)
    If $MainSocket = -1 Then Exit

    [/autoit]


    Läuft der FTP-Server, bekomme ich sofort eine Rückmeldung (sowohl beim Server als auch beim Script), ist der Server offline, warte ich 13 Sekunden auf Rückmeldung d.h. dann erscheint erst die Msgbox. Unabhängig von der opt("tcptimeout",xxx). Dieser timeout hat wahrscheinlich nur Auswirkung auf eine bestehende Verbindung.

    *weitersuchendaltesteintafelnausgrauervorzeitentziffert* :?:
    .Andy

    *edit*
    Die Antwortpakete werden Providerseitig geblockt! Das hat wohl etwas mit evtl. möglichen DoS-Angriffen zu tun.
    Laut Protokoll/Microsoft wird die maximale Wartezeit auf Antwort dynamisch berechnet, Problem ist nun folgendes:
    1.Fall: Die angefragte IP-Adresse ist offline oder nicht existent: Router(oder Gateway im i-net) sendet eine Antwort (ICMP Paket 3), die wird vom Script innerhalb der einstellbaren Zeit (timeout) ausgewertet. Alles paletti.
    2.Fall: Die IP-Adresse ist erreichbar, ein darauf laufender Server( oder Port) aber nicht. Das Gateway(Zielrechner) sendet die Antwort "Rechner existiert (Port offen)" (per ICMP). Der anfragende Rechner weiss nun, dass die Gegenseite sendet und wartet jetzt auf ein Antwortpaket vom Zielrechner (dieser timeout ist wie gesagt dynamisch und kann m.e. nicht "einfach" verändert werden, jedenfalls habe ich nichts bis wenig dazu gefunden). Der Zielrechner sendet nun ein Paket "Port nicht erreichbar( Serverdienst läuft nicht)". Dieses Paket wird, wohl weil über ICMP Angriffe (DoS) möglich sind, vom Provider geblockt (oder vom Ziel-Router), und der anfragende Rechner wartet und wartet und wartet....., bis nach Ablauf des dynamisch berechneten timeout (bis zu 15 Sekunden) das Script die Info erhält, daß der Zielrechner nichts sendet.

    Wenn ich einen Web(FTP)Server über die lokale IP-Adresse (Lan) anfrage, bekomme ich die Antwortpakete, sobald I-net mit im spiel ist , dann nicht.

  • Serverantwortzeit verkürzen möglich?

    • Andy
    • 13. Januar 2009 um 00:56

    sry, wenn man als alter DOS-ler eher an den Befehl PING denkt als an die schon in AutoIt implementierte Funktion....dann wird das nix, aber nach 5 Tassen Kaffee gehen einem ab und zu auchmal Kronleuchter auf 8o

    gute Nacht :rock:
    .Andy

  • Serverantwortzeit verkürzen möglich?

    • Andy
    • 13. Januar 2009 um 00:27

    Hi,

    Thx, gute Idee, funzt einwandfrei!
    *edit* doch nicht....der Ping gibt nur einen "erreichbaren" Rechner zurück, aber der darauf laufende (z.b.) FTP-Server kann nicht abgefragt werden...

    ciao
    .Andy

  • Serverantwortzeit verkürzen möglich?

    • Andy
    • 12. Januar 2009 um 23:38

    Hallo zusammen,

    ich greife per inetget() und div. _ftpxxxx auf Web- bzw. ftp-Server zu. Ist der Server offline, dauert der Versuch des Verbindungsaufbaus ca. 10 Sekunden, bevor das Script die Info Server=offline ausgibt.
    Kann man diese "Abfragezeit" einstellen? So daß man schon nach ~1-2 Sekunden die Info server=offline bekommt?
    Ich befürchte, daß diese Zeitspanne Teil des tcp ist, dann habe ich natürlich gelitten....oder doch nicht? ;(

    thx vorab
    .Andy

  • Fragen zu $CMDLINE[0]

    • Andy
    • 7. Januar 2009 um 15:23

    @ alle
    bin zu langsam^^

    ja, das mit dem schreiben in die console ist mir klar. der fehler lag aber trotzdem nicht an der übergabe der parameter, oder steh ich jetzt völlig auf dem schlauch?

    Zitat

    Also ich habe es jetzt so gemacht aber es funkt nicht:

    [autoit]

    Case $CMDLINE[$i] = '/Hallo'
    ConsoleWrite("Lfgdfgdfgfdgdfgvfdvgefvgfdvg")

    [/autoit]


    Ist nur ein Teil vom Script


    *edit* immer noch zu langsam^^
    die endgültige lösung hatte mit dem problem nichts zu tun, wie so oft auch bei meinen scripten :rolleyes:

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™