Probleme TCP Chat

  • Guten Abend

    Habe das problem das ich im Localen den verlauf angezeigt dekomme aber nicht im www
    woran könnte das liegen ?

  • ja sry ^^
    hier der server

    Spoiler anzeigen
    [autoit]

    #include <date.au3>
    ; Starten von TCP
    TCPStartup()

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

    $serverIP = 'meine dyndns' ; normalerweise die IP des Servers
    $serverport = 7660

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

    $srvSocket = TCPListen($serverIP,$serverport)

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

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Server Kontrolle", 625, 443, 700, 50)
    $Edit1 = GUICtrlCreateEdit("", 16, 16, 593, 417)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $con = TCPAccept($srvSocket)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    If $con >=0 Then
    $rev = ''
    $clientIP = SocketToIP($con)
    ConsoleWrite(@LF & $clientIP)
    While True
    $rev &= TCPRecv($con,2048)
    If @error Then ExitLoop
    WEnd

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

    If StringLeft($rev,8) = 'MSGPORT#' Then
    $sp = StringSplit($rev,'#')

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

    $cltSocket = TCPConnect($clientIP,$sp[UBound($sp) - 1])
    If $clientIP <> -1 Then
    TCPSend($cltSocket,GUICtrlRead($Edit1))
    TCPCloseSocket($cltSocket)
    EndIf
    ElseIf $rev <> '' Then
    $str = GUICtrlRead($Edit1)
    $str &=_Now() & @TAB & $rev & @CRLF
    GUICtrlSetData($Edit1,$str)
    EndIf
    EndIf
    Sleep(50)
    WEnd

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

    ; Funktion um die IP Adresse eines verbundenen Sockets wiederzugeben.
    ;----------------------------------------------------------------------
    Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

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

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

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

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
    "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
    $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
    If Not @error Then $aRet = $aRet[0]
    Else
    $aRet = 0
    EndIf

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

    $sockaddr = 0

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

    Return $aRet
    EndFunc ;==>SocketToIP

    [/autoit]


    uund hier der client

    Spoiler anzeigen
    [autoit]

    $ip = '@IPAddress1' ; normalerweise @IPAddress1
    $port =7662

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

    $serverIP = 'meine dyndns' ; normalerweise die IP des Servers
    $serverport = 7660

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

    ; Starten von TCP
    TCPStartup()

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Chat Client 2", 625, 336, 10, 360)
    $Edit1 = GUICtrlCreateEdit("", 16, 16, 601, 281, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_HSCROLL, $WS_VSCROLL))
    ;GUICtrlSetData(-1, "Edit1")
    $Input1 = GUICtrlCreateInput("", 24, 304, 497, 21)
    $Button1 = GUICtrlCreateButton("Senden", 528, 304, 89, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $mySocket = TCPListen($ip,$port)

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

    While 1
    $con = TCPAccept($mySocket)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    ; Sitzung aufbauen
    $srvSocket = TCPConnect($serverIP, $serverport)
    ; Bei einem Fehler Skript beenden
    If $srvSocket = -1 Then Exit
    ; Daten senden
    TCPSend($srvSocket, GUICtrlRead($Input1))
    ; Sitzung schliessen
    TCPCloseSocket($srvSocket)
    empfang()
    EndSwitch
    If $con >=0 Then
    $rev = ''

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

    While True
    $rev &= TCPRecv($con,2048)
    If @error Then ExitLoop
    WEnd
    If $rev <> '' Then
    $str = $rev
    GUICtrlSetData($Edit1,$str)
    EndIf
    EndIf
    Sleep(50)

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

    WEnd

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

    Func empfang()

    $srvSocket = TCPConnect($serverIP, $serverport)
    ; Bei einem Fehler Skript beenden
    If $srvSocket = -1 Then Exit
    ; Daten senden
    TCPSend($srvSocket, 'MSGPORT#' & $port)
    ; Sitzung schliessen
    TCPCloseSocket($srvSocket)
    MsgBox(48,"Vielen Dank","Vielen Dank,Admin wurde benachrichtigt","2")

    EndFunc

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

    ; Beenden von TCP
    TCPShutdown()

    [/autoit]
  • Hallo Detroit49,

    ich schätze dein Problem liegt unter dem verwendeten Server.
    es ist meines Wissens nicht möglich über einen Weblink zu connecten d.h. (http://www.dyndns.com) funktioniert NICHT.
    Ich habe dir den Tipp gegeben es mal über Dyndns zu versuchen, um an die Aktuelle IP zu kommen ABER du musst sie natürlich erst mal dir holen,
    bin mir nicht sicher ob es über TCPNametoIP Funktioiniert.. andernfalls sollte dir die IE.au3 weiterhelfen.


    EDIT TCPNameToIP geht..

    [autoit]

    TCPStartup()
    $examplehost="www.google.de"
    $examplehost_ip=TCPNameToIP($examplehost)
    MsgBox(1,$examplehost,$examplehost_ip)

    [/autoit]


    Gruß Marvin

  • habe eine ip von no-ip.org


    jetzt habe ich es verstanden aber habe keine ahnung wie ich das im script verbauen muss,könnte mir vllt jmd helfen ?

    2 Mal editiert, zuletzt von Detroit49 (8. September 2011 um 12:13)

  • Detroit49, an deiner Stelle würde ich erst mal einen funktionierenden Chat für dein LAN bauen und sobald der gut funktioiniert und du auch die darin verwendeten Funktionen
    auch verstehst, und nicht aus anderen Scripten einfach übernommen hast .. dann würde ich mich daran machen den Chat auf das WWW zu updaten..
    Es müssen viele Dinge voreingestellt ein damit dass alles geht Z.B. "Port forwarding" dein Router muss doch wissen an welchen Rechner und auch auf welchem Port das Packet hinmuss usw..
    also meine Empfehlung erst mal alles für das LAN bauen und im nachhinein umbauen .

    Gruß Marvin

  • Zitat

    Detroit49, an deiner Stelle würde ich erst mal einen funktionierenden Chat für dein LAN bauen und sobald der gut funktioiniert

    Im Lan funktioniert er ja !Im WWW auch nur der verlauf wird nicht angezeigt im client,was wiederum im Lan geht

    Zitat

    und du auch die darin verwendeten Funktionen
    auch verstehst, und nicht aus anderen Scripten einfach übernommen hast ..

    Wiso das rad neuerfinden?

    Zitat

    Es müssen viele Dinge voreingestellt ein damit dass alles geht Z.B. "Port forwarding" dein Router muss doch wissen an welchen Rechner und auch auf welchem Port das Packet hinmuss usw..

    Dns ist alles im router eingestellt !!

  • Hier der client

    Spoiler anzeigen
    [autoit]

    $ip = @IPAddress1 ; normalerweise @IPAddress1
    $port = 7661

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

    $serverIP = '00.00.00.000' ; normalerweise die IP des Servers
    $serverport = 7660

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

    ; Starten von TCP
    TCPStartup()

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Chat Client 1", 625, 336, 10, 10)
    $Edit1 = GUICtrlCreateEdit("", 16, 16, 601, 281, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_HSCROLL, $WS_VSCROLL))
    ;GUICtrlSetData(-1, "Edit1")
    $Input1 = GUICtrlCreateInput("", 24, 304, 497, 21)
    $Button1 = GUICtrlCreateButton("Senden", 528, 304, 89, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $mySocket = TCPListen($ip,$port)

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

    While 1
    $con = TCPAccept($mySocket)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    ; Sitzung aufbauen
    $srvSocket = TCPConnect($serverIP, $serverport)
    ; Bei einem Fehler Skript beenden
    If $srvSocket = -1 Then Exit
    ; Daten senden
    TCPSend($srvSocket, GUICtrlRead($Input1))
    ; Sitzung schliessen
    TCPCloseSocket($srvSocket)
    empfang()
    EndSwitch
    If $con >=0 Then
    $rev = ''

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

    While True
    $rev &= TCPRecv($con,2048)
    If @error Then ExitLoop
    WEnd
    If $rev <> '' Then
    $str = $rev
    GUICtrlSetData($Edit1,$str)
    EndIf
    EndIf
    Sleep(50)

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

    WEnd

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

    Func empfang()

    $srvSocket = TCPConnect($serverIP, $serverport)
    ; Bei einem Fehler Skript beenden
    If $srvSocket = -1 Then Exit
    ; Daten senden
    TCPSend($srvSocket, 'MSGPORT#' & $port)
    ; Sitzung schliessen
    TCPCloseSocket($srvSocket)

    EndFunc

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

    ; Beenden von TCP
    TCPShutdown()

    [/autoit]

    Einmal editiert, zuletzt von Detroit49 (8. September 2011 um 19:29)