TCP - Übertragung Textzeile - ????

  • Hallo,

    ich komme einfach nicht dahinter was ich falsch mache. Weder die Hilfe-Beispiele noch das sehr großzügige Script "TCP File Transfer mit automatischem Start" von gtaspider helfen mir auf die Sprünge.

    Warum kann ich hiermit nicht eine stinknormale Textzeile von einem PC zum andern übertragen (Testweise bleibe ich mit der gleichen IP auf dem selben PC)

    TCP_Listen (= Server)

    [autoit]

    ;SERVER!! Start Me First !!!!!!!!!!!!!!!

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

    $g_IP = @IPAddress1
    $TCP_PORT = 65432

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

    msgbox(4096,"test",@IPAddress1)

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

    TCPStartUp() ; Start The TCP Services

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

    $MainSocket = TCPListen($g_IP, $TCP_PORT, 100) ; Create a Listening "SOCKET"
    If $MainSocket = -1 Then
    msgbox(4096,"test","Ende 01")
    Exit
    EndIf

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

    While 1
    $ConnectedSocket = TCPAccept( $MainSocket) ; look for client connection
    If $ConnectedSocket >= 0 Then
    msgbox(0,"","my server - Client Connected")
    ExitLoop
    EndIf
    Wend

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

    $text = TCPRecv($nSocketRecv, 2048)

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

    msgbox(4096,"test","Ende 02"&$text)

    [/autoit]


    TCP_Connect (=Client)

    [autoit]


    ;CLIENT!!!!!!!! Start SERVER First... dummy!!
    $g_IP = @IPAddress1
    $TCP_PORT = 65432

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

    TCPStartUp() ; Start The TCP Services

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

    $MainSocket = TCPListen($g_IP, $TCP_PORT, 100 ) ; Connect to a Listening "SOCKET"
    If $MainSocket = -1 Then msgbox(4096,"Fehler", " Windows API WSAGetLasterror Nr. "&@error )

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

    $x = TCPSend($Mainsocket, "test test test3")
    If @error Then ExitLoop

    [/autoit]

    Vielen Dank
    Viele Grüße
    Carsten

    • Offizieller Beitrag

    Hallo!

    Du darfst nicht 2x TCPListen verwenden! Um zu connecten brauchst du TCPConnect! Ich hab dir grade eben mal einfach ein skript geschrieben mit ein paar commants, vlt hilft dir das ein bischen weiter!

    Server

    Spoiler anzeigen
    [autoit]

    ;Server - Ist egal was du zuerst startest :D
    ;By GtaSpider (die rechte schenk ich dir aber :) d.h.: du musst nicht By GtaSpider rüberschreiben!)

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

    Const $IP = @IPAddress1 ;Const damit die variable nich verädnert werden kann
    Const $PORT = 65432

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

    TCPStartup();TCP Start

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

    $nListen = TCPListen($IP,$PORT);Listening
    If $nListen = -1 Then MsgBox(16,"","Kann kein Server erstellen! Code: "&@error)

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

    $nAcc = TCPAccept($nListen);$nAcc = TcpAccept
    While $nAcc = -1;Solange $nAcc = -1 ist soll die Schleife nicht beendet werden
    $nAcc = TCPAccept($nListen);$nAcc wird neu declariert!
    WEnd

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

    $sRecv = TCPRecv($nAcc,1024);$sRecv = Recv von dem nAcc account
    While $sRecv = "";Solange bei $sRecv nix ankommt soll die Schleife nicht beendet werden
    $sRecv = TCPRecv($nAcc,1024);$sRecv wird neu declariert
    Sleep(100);Sleep 100ms damit cpu < 100%
    WEnd

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

    MsgBox(0,"Recv:",$sRecv);Gibt empfangende daten aus

    [/autoit]

    Client

    Spoiler anzeigen
    [autoit]

    ;Client - Ist egal was du zuerst startest :D
    ;By GtaSpider (die rechte schenk ich dir aber :) d.h.: du musst nicht By GtaSpider rüberschreiben!)

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

    Const $IP = @IPAddress1 ;Const damit die variable nich verädnert werden kann
    Const $PORT = 65432

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

    TCPStartup();TCP Start

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

    $nCon = TCPConnect($IP,$PORT);$nCon = Connecet
    While $nCon = -1;Solange $nCon = -1 ist soll die Schleife nicht beendet werden
    $nCon = TCPConnect($IP,$PORT);$nCon wird neu declariert!
    WEnd

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

    TCPSend($nCon,"Test"&Random(0,100,1));Sendet "Test" und eine random zahl von 0 bis 100 (z.b.: Test95)
    Sleep(200);Ist wichtig, weil sonst die Verbindung zuschnell geschlossen wird! Falls das TCP über inet gehen soll muss man das sleep möglicher weise etwas erhöen,
    ;da die inet verbindung vlt nicht so schnell ist

    [/autoit]

    Mfg Spider

  • Sehr gut - funktioniert.

    Eigentlich einfach - wenn man weiß wie es geht :)

    Vielen Dank.

    > ;By GtaSpider (die rechte schenk ich dir aber :) d.h.: du musst nicht By GtaSpider rüberschreiben!)

    Ich schreibe dafür 'Mit hilfreicher Unterstützug von GtaSpider :)

    Schönes
    Wochenende
    Carsten