TCPsend mehrere Zahlen gemeinsam senden

  • Hallo,

    ich versuche mittels TCPsend(,) Zahlenwerte zu übertragen. Gegenstelle ist ein Server, den ich nicht verändern kann und der den TCP Stream in Byte aufteilt (so wie TCP nun mal ist) und in einem Array ablegt. Ich möchte nun z.B. 3 Doppworte schicken (0x11223344, 0x55667788 und 0x99aabbcc).

    Code
    DIM $TCP_cmd1 		= 0x11223344
    DIM $TCP_cmd2 		= 0x55667788
    DIM $TCP_cmd3 		= 0x99aabbcc
    TCPSend($ConnectedSocket,$TCP_cmd1)
     TCPSend($ConnectedSocket,$TCP_cmd2)
     TCPSend($ConnectedSocket,$TCP_cmd3)


    Nun passiert es aber das meist erst nur die erste Zeile als ein Stream übertragen werden und dann Zeile 2 und 3 als ein packet kommen?

    Wie kann ich bewirken, das alles in einem Stream überrtagen wird?

    Wenn ich versuche die Daten in einem String zusammen zu fassen kommt blödsinn raus, da dann nicht die Zahlenwerte sondern die ASCII Werte übertragen werden, aus 1122 wird dann 31 31 32 32.

    RuffuR

    Einmal editiert, zuletzt von Ruffur (6. August 2009 um 12:01)

  • Hi,

    hilft Dir das vielleicht weiter. Kann leider nicht testen wegen fehlender Gegenstelle. Aber Deine Strings bekommt man zusammen, wenn man die Hex Werte als String definiert:


    DIM $TCP_cmd1 = "0x11223344"
    DIM $TCP_cmd2 = "0x55667788"
    DIM $TCP_cmd3 = "0x99aabbcc"
    ;TCPSend($ConnectedSocket,$TCP_cmd1)
    ;TCPSend($ConnectedSocket,$TCP_cmd2)
    ;TCPSend($ConnectedSocket,$TCP_cmd3)
    $TCP_cmd = $TCP_cmd1 & $TCP_cmd2 & $TCP_cmd3
    MsgBox (0,"", $TCP_cmd)

    TCPSend($ConnectedSocket,$TCP_cmd)


    ;-))

    Stefan

  • Würde nochn Komma oder so dazwischen setzen, dann kann er es später auf der Gegenseite splitten.

  • Hallo,

    nein leider nicht, das mit den Strings geht eben gerade nicht, da die Übertragung dann als ASCII läuft.

    Siehe Oben 0x11223344" wird zu (es kommen die 0x30,0x78... an und nicht 11223344 in hex)

    0x30 = 0
    0x78 = x
    0x31 = 1
    0x31 = 1
    0x32 = 2
    0x32 = 2
    0x33 = 3
    0x33 = 3
    0x34 = 4
    0x34 = 4

    RuffuR

  • OK, OK so geht's scheinbar nicht weiter. Andere Idee...

    wie bekomme ich ein BUFFER(Array????) mit Binärdaten gefüllt, am Besten als Byte, welches ich dann komplett an TCPsend übergeben kann. Gibt es sowas wie Pointer?

    [autoit]


    $Array_of_byte[0] = 11
    $Array_of_byte[1] = 22
    $Array_of_byte[2] = 33
    $Array_of_byte[3] = 44

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

    *Stringpointer = $Array_of_Byte

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

    TCPSend($ConnectedSocket,$Stringpointer )

    [/autoit]


    RuffuR

  • gelöst! :thumbup:

    [autoit]


    $var1 = 0x11223344
    $string1 = BinaryToString($var1)

    $var2 = 0x55667788
    $string2 = BinaryToString($var2)

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

    $var3 = 0x99aabbcc
    $string3 = BinaryToString($var3)

    $string = $string1 & $string2 & $string3

    msgbox(0, "string1", $string1) ; hier sieht man u.U. kryptische Zeichen
    msgbox(0, "string2", $string2)
    msgbox(0, "string3", $string3)
    msgbox(0, "string", $string)

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

    TCPSend($ConnectedSocket,$string)

    [/autoit]

    RuffuR