TCP Verbindung VMWare

  • Hallo Autoit Forum,


    ich habe eine Frage bezüglich der Verwendung einer VM als Server.


    MEIN PC --> Windows 7 --> Client
    MEIN PC --> Windows 7 --> VM --> Windows 7 --> Server


    Ich habe das problem das wenn ich mein client Skript ausführe
    die Anfrage nicht am server ankommt. Kann mir da vll. jemand
    helfen.


    Client:


    $ip = 'IP Adresse vom in VM laufendem Windows 7'
    TCPStartUp()


    Do
    $TCPConnect = TCPConnect($ip,45670)
    If @error Then
    MsgBox(64,"Error!","konnte nicht verbinden :")
    EndIf
    Until $TCPConnect <> -1


    $TCPSend = TCPSend($TCPConnect,"First text on moon")


    TCPShutdown()


    Server:


    $ip = 'IP Adresse vom in VM laufendem Windows 7'
    TCPStartUp()


    $MainSocket = TCPListen($ip, 45670, 100 )


    while 1
    $TCPAccept = TCPAccept($MainSocket)
    If @error then
    MsgBox(64,"Error","error")
    EndIf
    WEnd


    $TCPRecv = TCPRecv($TCPAccept,2048)


    If $TCPRecv <> "" Then
    MsgBox(0,"Info","Text erhalten :" & $TCPRecv)
    EndIf



    TCPShutdown()


    Schonmal Danke ;)

  • Du gehst im Server in eine While-Schleife.
    while 1
    1 heißt so viel wie true. Die Schleiße ist somit endlos, bis sie mit ExitLoop verlassen wird.
    Du akzeptierst mit TcpAccept die Verbindung, du bleibst aber in der Schleife, sodass du im Prinzip nach weiteren Clienten suchst.
    Du kommst somit nie zum
    $TCPRecv = TCPRecv($TCPAccept,204)


    Hinzu kommt noch, dass das TCPRecv nur einmal aufgerufen wird. Somit bekommst du einen leeren String (wegen der Verzögerung beim senden, da der Client nicht im selben Moment senden wird, in dem du dort ankommst. Daher muss es in eine Schleife gepackt werden, welche unterbrochen wird, sobald ein Text gesendet wurde.


    So müsste es richtig aussehen:



    Als Tipp:
    Quelltext bitte in autoit Codes setzen (der Button mit dem AutoIt Logo)
    Bei größeren Scripten zusätzlich noch in einen spoiler. (der SP-Button)