fileOpen 16

  • $File = FileOpen(@ScriptDir & "\a.txt", 16)
    $Read = FileRead($File)
    FileClose($File)

    Wenn in a.txt z.B. "Hallo" steht kommt bei $Read "0x84616C6C6F" raus. Ich will das benutzen um .exe Dateien mit TCP zu senden.

    Jetzt mein Problem: wie schaffe ich es, das rückgängig zu machen, dass ich wieder "Hallo" erhalte?

    Wenn jemand eine andere EINFACHE Möglichkeit hat z.B. exe-Dateien mit TCP zu senden, wär das auch gut.

    Einmal editiert, zuletzt von jjj (21. Juni 2013 um 16:38)

  • danke, aber da ich est vor ein par tagen it autoit angefangen habe, verstehe ich nicht all zu viel davon.
    So sieht das bisherige Programm aus:

    Global $IP = @IPAddress3

    TCPStartup()

    $Befehl = InputBox("Befehl", "Nachricht: 1;Nachricht" & @LF & "Datei Starten: 2;Dateiname"& @LF & "Datei senden: 3;jetziger Dateiname;späterer Dateiname")
    if $Befehl = 3 Then
    $teil = StringSplit($Befehl, ';', 1)
    $Read = FileRead($teil[2])
    $Befehl = "3;" & $teil[3] & ";"& $Read
    EndIf

    MsgBox(0, "Sender", $Befehl)

    $Socket = TCPListen($IP, 65432)

    Do
    $Connection = TCPAccept($Socket)
    Until $Connection <> -1

    TCPSend($Connection, $Befehl)
    TCPShutdown()


    und:


    TCPStartup()
    $IP = "127.0.0.1"

    $Connection = TCPConnect($IP, 65432)
    If $Connection < 0 Then
    MsgBox(16, "Error", "Konnte keine Verbindung herstellen!")
    _Exit()
    EndIf
    $Recv = TCPRecv($Connection, 100000)
    sleep(1000)
    $teil = StringSplit($Recv, ';')
    Switch $teil[1]
    Case 1
    $msg = $teil[2]
    Case 2
    $msg = "Datei starten"
    ShellExecute($teil[2], @ScriptDir, "open")
    Case 3
    $msg = "Daten Empfangen"
    FileWrite($teil[2], $teil[3])
    Case Else
    $msg = "Error"
    EndSwitch

    MsgBox(0, "Empfänger", $msg)

    Func _Exit()
    TCPShutdown()
    Exit
    EndFunc


    Funktioniert auch soweit, nur eben nicht für exe, oder jpg Dateien ect.
    im ersten teil bekomme ich das von oben auch eingebaut.

    gibt es keine EINFACHE Lösung, bei der man nur zwei zeilen oder so einfügen muss, damit die gesendete Datei wieder "normal" wird?

    6 Mal editiert, zuletzt von jjj (21. Juni 2013 um 14:53)

  • Danke, das wars :)

    (glaube ich)

    Spoiler anzeigen


    Global $IP = @IPAddress3

    TCPStartup()

    $Befehl = InputBox("Befehl", "Nachricht: 1;Nachricht" & @LF & "Datei Starten: 2;Dateiname"& @LF & "Datei senden: 3;jetziger Dateiname;späterer Dateiname")
    if $Befehl = 3 Then
    $teil = StringSplit($Befehl, ';', 1)
    $Read = FileRead($teil[2])
    Local $bin = StringToBinary($Read)
    ConsoleWrite($bin & @LF)
    $Befehl = "3;" & $teil[3] & ";"& $bin
    EndIf

    MsgBox(0, "Sender", $Befehl)

    $Socket = TCPListen($IP, 65432)

    Do
    $Connection = TCPAccept($Socket)
    Until $Connection <> -1

    TCPSend($Connection, $Befehl)
    TCPShutdown()

    Spoiler anzeigen


    TCPStartup()
    $IP = "127.0.0.1"

    $Connection = TCPConnect($IP, 65432)
    If $Connection < 0 Then
    MsgBox(16, "Error", "Konnte keine Verbindung herstellen!")
    _Exit()
    EndIf
    $Recv = TCPRecv($Connection, 100000)
    sleep(1000)
    $teil = StringSplit($Recv, ';')
    Switch $teil[1]
    Case 1
    $msg = $teil[2]
    Case 2
    $msg = "Datei starten"
    ShellExecute($teil[2], @ScriptDir, "open")
    Case 3
    $msg = "Daten Emfangen"
    ConsoleWrite(BinaryToString($teil[3]) & @LF)
    $q = BinaryToString($teil[3])
    FileWrite($teil[2], $q)
    Case Else
    $msg = "Error"
    EndSwitch

    MsgBox(0, "Emfänger", $msg)

    Func _Exit()
    TCPShutdown()
    Exit
    EndFunc

    das wars, jetzt läuft alles, wie es soll!
    danke!
    naja fast, es funktioniert nur bei sehr kleinen Dateien, das passt jetzt zwar nichtmehr zum Thema, aber wenn mir jemand sagen könnte, wo ich die Lösung für das Problem finde wäre ich echt dankbar.

    9 Mal editiert, zuletzt von jjj (21. Juni 2013 um 16:38)