• Hab mich mal an nem Chat versucht..

    How To?
    Server:
    - Der Server tippt ein "Listen" und die IP-Adresse des Clients...
    Client:
    - Der Client tippt ein "Connect" und die IP-Adresse des Servers...

    Port ändern:
    "Port" eintippen und den gewünschten Port eintippen

    IP-Adresse bekommen:
    "My Adress" eintippen und die IP-Adresse wird angezeigt

    Is mein erster Chat...

    Hier das Ergebnis:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>

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

    HotKeySet("{ESC}", "_Exit")
    Opt("GUIOnEventMode", 1)

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

    $Form = GUICreate("Chat", 202, 146, -1, -1, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Input = GUICtrlCreateInput("", 8, 120, 121, 21)
    $Button = GUICtrlCreateButton("Send", 136, 120, 59, 22, 0)
    GUICtrlSetOnEvent(-1, "_Chat")
    $Edit = GUICtrlCreateEdit("", 8, 8, 185, 105, BitOR($ES_AUTOVSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL))
    GUISetState(@SW_SHOW)

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

    Global $Recv = ""
    Global $ListenAdress = 0
    Global $ConnectAdress = 0
    Global $ConnectPort = 0
    Global $Connected = 0
    Global $Socket
    Global $Adress = @IPAddress1
    Global $Port = 33891

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

    Func _Connect()
    TCPStartup()

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

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Connecting..." & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    $Socket = -1
    Do
    $Socket = TCPConnect($Adress, $Port)
    Until $Socket <> -1

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Listen..." & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    $Listen = TCPListen($Adress, $Port)

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Accept..." & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    TCPAccept($Listen)

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Connected" & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)

    $Connected = 1
    $ConnectAdress = 0
    EndFunc ;==>_Connect

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

    Func _Listen()
    TCPStartup()

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

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Listen..." & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    $Listen = TCPListen($Adress, $Port)

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Accept..." & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    $Socket = -1
    Do
    $Socket = TCPAccept($Listen)
    Until $Socket <> -1

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

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Connecting..." & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    $Connect = TCPConnect($Adress, $Port)

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Connected" & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)

    $Connected = 1
    $ListenAdress = 0
    EndFunc ;==>_Listen

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

    Func _Chat()
    If $ListenAdress = 1 Then
    $Adress = GUICtrlRead($Input)
    If $Adress = "My Adress" Then
    $Adress = @IPAddress1
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Adress: " & $Adress & @CRLF)
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Port: " & $Port & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    Else

    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Adress: " & $Adress & @CRLF)
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Port: " & $Port & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    EndIf
    _Listen()
    ElseIf $ConnectAdress = 1 Then
    $Adress = GUICtrlRead($Input)
    GUICtrlSetData($Input, "")
    If $Adress = "My Adress" Then
    $Adress = @IPAddress1
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Adress: " & $Adress & @CRLF)
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Port: " & $Port & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    Else
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Adress: " & $Adress & @CRLF)
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Port: " & $Port & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    EndIf
    _Connect()
    ElseIf $ConnectPort = 1 Then
    $Port = GUICtrlRead($Input)
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Port: " & $Port & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    $ConnectPort = 0
    Else
    $Data = GUICtrlRead($Input)
    If $Data = "Connect" Then
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Connect:" & @CRLF & "Insert Adress: " & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    $ConnectAdress = 1
    ElseIf $Data = "Listen" Then
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Listen:" & @CRLF & "Insert Adress: " & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    $ListenAdress = 1
    ElseIf $Data = "Port" Then
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Insert Port: " & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    $ConnectPort = 1
    ElseIf $Data = "" Then
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "No Message..." & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    ElseIf $Data = "My Adress" Then
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & "Adress: " & @IPAddress1 & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    Else
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & @UserName & ": " & $Data & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    GUICtrlSetData($Input, "")
    TCPSend($Socket, @UserName & ": " & $Data)
    EndIf
    EndIf
    EndFunc ;==>_Chat

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

    Func _Recv()
    GUICtrlSetData($Edit, GUICtrlRead($Edit) & $Recv & @CRLF)
    $Lines = _GUICtrlEdit_GetLineCount($Edit)
    _GUICtrlEdit_LineScroll($Edit, 0, $Lines)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    While 1
    $Recv = TCPRecv($Socket, 2048)
    If $Recv <> "" Then
    _Recv()
    EndIf
    WEnd

    [/autoit]
  • Also von einem PC zum anderen hat es innerhalb des Netzwerks funktioniert, aber wenn ich versuche es von außerhalb, also aus dem Internet zu machen, dann will er nicht. Der Port ist auch freigegeben etc. .

    Ist das normal, oder mache ich da was falsch?


    MfG

    AutoGhost

  • Es könnte sein das dein Router die Ports gesperrt hat.
    Versuch mal 192.168.1.1 in deinen Brwoser einzugeben und dort die Ports freizugeben.

  • @AutoGhost

    hast du bedacht, dass du übers Internet nicht mit

    [autoit]

    Global $Adress = @IPAddress1

    [/autoit]


    arbeiten kannst? Das würde ja deine lokale "LAN -IP" Adresse angeben. Du brauchst über Inet natürlich die Ipadresse, die Dir von Deinem Provider (in der Regel dynamisch und alle 24 Stunden eine andere) zugeteilt wird. Und das ist sicher KEINE aus dem privaten Bereichen:

    Zitat

    10.0.0.0–10.255.255.255
    172.16.0.0–172.31.255.255
    192.168.0.0–192.168.255.255

    Und wenn Du dann den Port freigegeben hast, sollte das auch funktionieren...

    @r1fLeX Er hat doch geschrieben, dass die Ports sind offen?! Und nicht jeder Router hat die 192.168.1.1 .

    schöne Grüße

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Also mir gefällt der chat voll!! :thumbup: Ich hab auch nen Chat gemacht, aber ich hab es per FileWrite gemacht und nen Netzlaufwerk (S:\) haben wir in der schule, wusste nit wie ich das sonst hinbekommen soll, hab das auch noch mit benutzerauswahl un so, blick bei deinem Script allerdings noch nit so wirklich durch, aknste mir das noch mal erklären? Danke

    mfg. Jam00

    • Offizieller Beitrag

    Wo ist denn der Server?

    Des steht doch im 1. Post wie Server und Client eingerichtet werden .

    How To?
    Server:
    - Der Server tippt ein "Listen" und die IP-Adresse des Clients...
    Client:
    - Der Client tippt ein "Connect" und die IP-Adresse des Servers...

  • hallo

    ich bin noch recht eu hir im forum , den chat finde ich toll , nur verstehen tu ich ihn nicht so ganz ,
    sind server und clint das selbe ????

    wie kann ein clint den anderen erreichen ???

    wie gesagt bin noch sehr neu !!!


    THX


  • wie kann ein clint den anderen erreichen ???

    Client und Client verbinden sich und senden sich gegenseitig etwas oder du hast einen Server welcher die Packete auswertet und an den richtigen Empfänger schickt (Besser für mehrere Clients) ;)

    Lg, Fabian