AutoIt Client <--> Java Server

  • Hallo,

    ich versuche eine einfache Kommunikation mittels TCP zwischen AutoIt Client und Java Server. Das Senden vom Server zum Client klappt ohne Probleme, jedoch geht es andersherum nicht.
    Hier der Quellcode.
    Client:

    Spoiler anzeigen
    [autoit]


    ; -------------------------------------------------------------------------
    ; Imports
    ; -------------------------------------------------------------------------

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

    #include <FF.au3>

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

    ; -------------------------------------------------------------------------
    ; Variables
    ; -------------------------------------------------------------------------

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

    Global $connectionProps[2]
    Global $tcpSocket, $ffSocket

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

    Local Const $IniPath = @ScriptDir & "\config.ini"
    Local $tcp, $data

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

    ; -------------------------------------------------------------------------
    ; Main
    ; -------------------------------------------------------------------------

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

    ; import program configs
    If FileExists($IniPath) Then
    $connectionProps[0] = IniRead($IniPath, "Connection", "Host", "NotFound")
    $connectionProps[1] = IniRead($IniPath, "Connection", "Port", "10101")
    SplashTextOn("","Configuration file found.",300,50,-1,-1,1)
    Sleep(3000)
    Else
    SplashTextOn("","No config files.",300,50,-1,-1,1)
    Sleep(3000)
    Exit(0)
    EndIf

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

    ; Firefox connection attempt
    $ffSocket = _FFConnect(Default,Default,3000)
    If $ffSocket > -1 Then
    SplashTextOn("","Connection to FireFox established.",300,50,-1,-1,1)
    Sleep(3000)
    SplashOff()
    Else
    SplashTextOn("","Unable to connect to FireFox.",300,50,-1,-1,1)
    Sleep(3000)
    Exit(0)
    EndIf

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

    ; TCP connection attempt
    $tcp = TCPStartup()
    If $tcp = 0 Then
    SplashTextOn("","Unable to startup TCP Services.",300,50,-1,-1,1)
    Sleep(3000)
    Exit(0)
    EndIf

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

    $tcpSocket = TCPConnect($connectionProps[0],$connectionProps[1])
    If $tcpSocket > -1 Then
    SplashTextOn("","TCP Connection established.",300,50,-1,-1,1)
    Sleep(3000)
    SplashOff()
    Else
    SplashTextOn("","Unable to connect to Port " & $connectionProps[1],300,50,-1,-1,1)
    Sleep(3000)
    Exit(0)
    EndIf

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

    ;ready for work
    TCPSend($tcpSocket, "ready")
    If @error Then Exit(0)

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

    ; main loop
    While 1
    ;TCPSend($tcpSocket, "ready")
    ;If @error Then Exit(0)

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

    $data = TCPRecv($tcpSocket, 512)
    If $data <> "" Then
    MsgBox(0, "Client: Received Packet", $data)
    EndIf

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

    WEnd

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

    ; -------------------------------------------------------------------------
    ; Functions
    ; -------------------------------------------------------------------------

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


    Server:

    Spoiler anzeigen


    Als Test habe ich mal einen Echo Server in Python geschrieben und siehe da, es hat reibungslos geklappt. Vielleicht hat jemand eine Idee wieso es mit Java nicht geht.

    Gruß
    rororo

    Einmal editiert, zuletzt von rororo18 (1. März 2009 um 16:33)

  • Ist klar, dass das nicht geht. .readLine(); wartet auf einen Zeileumbruch. Dein Server bleibt so lange an der Stelle hängen, bis ein Zeilenumbruch kommt.

  • Arg. Hab bis jetzt immer pures Java in Netzwerksachen gebraucht und deshalb ist mir das mit Zeilenumbruch nie aufgefallen. Hab mich mit der Blockade bei readLine() nie weiter befasst ;)