TCPConnect funktioniert leider nicht ;(

  • Hey
    Möchte ein TCPChat ohne Server machen, dh. die Nachricht geht sofort an den Empfänger.

    Hier mein Skript, dass etwas schreibt:

    Spoiler anzeigen
    [autoit]


    TCPStartup()

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

    MsgBox(0,0,_ConnectTo("84.166.120.203",8080,"Hey."))

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

    Func _ConnectTo($ip,$port,$quest)
    $t=TimerInit()
    Do
    $Socket_Connect = TCPConnect($ip,$port)
    Until $Socket_Connect <> -1 OR TimerDiff($t) > 5000
    If $Socket_Connect=-1 Or $Socket_Connect=0 Then Return "Error:Die Verbindung zum PC konnte nicht hergestellt werden."
    $sendedBytes = TCPSend($Socket_Connect,$quest)
    If $sendedBytes = 0 Then Return "Error:Das Paket konnte nicht gesendet werden."
    TCPCloseSocket($Socket_Connect)
    Return True
    EndFunc

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

    Func _ListenTo($ip,$port)
    $Socket_Listen = TCPListen($ip,$port)
    $acceptedSocket = TCPAccept($Socket_Listen)
    If $acceptedSocket <> -1 Then
    $receivedData = TCPRecv($acceptedSocket, 1024)
    TCPCloseSocket($acceptedSocket)
    Return $receivedData
    EndIf
    Return ""
    EndFunc

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

    TCPShutdown()

    [/autoit]


    Und hier der, der auf die Nachricht wartet:

    Spoiler anzeigen
    [autoit]


    TCPStartup()

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

    While 1
    $quest=_ListenTo("79.206.101.108",8080)
    If $quest<>"" Then MsgBox(0,0,$quest)
    WEnd

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

    Func _ConnectTo($ip,$port,$quest)
    $t=TimerInit()
    Do
    $Socket_Connect = TCPConnect($ip,$port)
    Until $Socket_Connect <> -1 OR TimerDiff($t) > 5000
    If $Socket_Connect=-1 Or $Socket_Connect=0 Then Return "Error:Die Verbindung zum PC konnte nicht hergestellt werden."
    $sendedBytes = TCPSend($Socket_Connect,$quest)
    If $sendedBytes = 0 Then Return "Error:Das Paket konnte nicht gesendet werden."
    TCPCloseSocket($Socket_Connect)
    Return True
    EndFunc

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

    Func _ListenTo($ip,$port)
    $Socket_Listen = TCPListen($ip,$port)
    $acceptedSocket = TCPAccept($Socket_Listen)
    If $acceptedSocket <> -1 Then
    $receivedData = TCPRecv($acceptedSocket, 1024)
    TCPCloseSocket($acceptedSocket)
    Return $receivedData
    EndIf
    Return ""
    EndFunc

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

    TCPShutdown()

    [/autoit]


    Thx4Help

    Nur keine Hektik - das Leben ist stressig genug

  • so gehts

    1. User "Client"

    Spoiler anzeigen
    [autoit]

    TCPStartup()
    _ConnectTo(@IPAddress1, 8080, "Hallo")
    Func _ConnectTo($ip,$port,$quest)
    $t=TimerInit()
    Do
    $Socket_Connect = TCPConnect(@IPAddress1,8080)
    Until $Socket_Connect <> -1 OR TimerDiff($t) > 5000
    If @error Then MsgBox(0, "", "Error:Die Verbindung zum PC konnte nicht hergestellt werden.")
    TCPSend($Socket_Connect,"Hallo")
    If @error Then MsgBox(0, "", "Error:Das Paket konnte nicht gesendet werden.")
    TCPCloseSocket($Socket_Connect)
    EndFunc

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

    TCPShutdown()

    [/autoit]


    2. User "Server"

    Spoiler anzeigen
    [autoit]

    TCPStartup()
    $Socket_Listen = TCPListen(@IPAddress1,8080)
    While 1
    $quest=_ListenTo()
    If $quest<>"" Then MsgBox(0,0,$quest)
    WEnd

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

    Func _ListenTo()
    $acceptedSocket = TCPAccept($Socket_Listen)
    If $acceptedSocket <> -1 Then
    $receivedData = TCPRecv($acceptedSocket, 1024)
    TCPCloseSocket($acceptedSocket)
    Return $receivedData
    EndIf
    Return ""
    EndFunc

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

    TCPShutdown()

    [/autoit]

    vergiss nicht die ports freizuschalten

  • Hallo antispeed,

    postID=172025#post172025

    Ok.Ich habe Router&der Andere auch.Möchte, dass das Skript funkt. wenn man einen Router hat & wenn man keinen hat.

    dann mss jeder von euch beiden sich durch die Konfigurationsanleitung des jeweiligen Routers durcharbeiten und entsprechend einstellen.
    An deinem Zitat glaube ich zu erkennen, dass die Verbindung über das INet laufen soll. In diesem Post:
    http://www.autoit.de/index.php?page=Thread& hat Andy eine Schritt für Schritt-Anleitung erstellt,

    mfg (Auto)Bert