Problem mit TCP-Verbindung!

  • Ich hab ein Problem beim Verbiden des Clienst zu Server uz. Wenn ich im Client _GetIP() nehme funktioniert es, also, wenn ich den Server auf meinem PC gestartet hab. Aber wenn ich da einen InputBox mache wo ich einfach meine IP eingebe verbindet der sich nicht!

    Client
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListBoxConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTreeView.au3>
    #include <GUIConstants.au3>
    #include <INet.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Hendrik\Favoriten\Eigene Dateien\AutoIt\INC\Benutzeroberfläche\Senden.kxf
    $TDC_Speichern = GUICreate("INC", 202, 205, 316, 269)
    $TreeView1 = GUICtrlCreateTreeView(3, 3, 193, 149)
    $Input = GUICtrlCreateInput("", 3, 156, 193, 21)
    $Senden = GUICtrlCreateButton("Senden", 123, 177, 75, 25, 0)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 47, 177, 75, 25, 0)
    Dim $TDC_Speichern_AccelTable[1][2] = [["{ENTER}", $Senden]]
    GUISetAccelerators($TDC_Speichern_AccelTable)
    #EndRegion ### END Koda GUI section ###
    Opt("TrayMenuMode", 1)
    $Name = InputBox("INC", "Gib deinen Namen ein")
    If @error = 1 Then Exit
    Dim $Namen[999999]
    $IP = InputBox ("INC","Die IP des Servers")
    $Port = 31758
    Global $Online

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

    $ConnectedSocket = TCPConnect($IP, $Port)
    If $ConnectedSocket = -1 Then
    MsgBox(16, "Error", "Es ist bei dem Verbindungsversuch ein Fehler aufgetreten, vermutlich ist kein Server gestartet!")
    Exit
    EndIf
    TCPSend($ConnectedSocket, "Name," & $Name)
    While 1
    $Erhalten = TCPRecv($ConnectedSocket, 2048)
    $sErhalten = StringSplit($Erhalten, "|")
    If $sErhalten[1] = "Namen" Then
    $Online = $sErhalten[2]
    For $B = 0 To $sErhalten[2]
    $B1 = $B + 3
    $Namen[$B] = $sErhalten[$B1]
    Next
    ExitLoop
    EndIf
    WEnd
    HotKeySet("{end}", "_ToolTip")
    HotKeySet("^{s}", "_Senden")
    MsgBox(0, "Info", "Drücke Strg+S um eine Nachricht zu senden." & @CRLF & "Drücke Ende um die Nachricht zu löschen")
    $TrayExit = TrayCreateItem("Beenden")
    While 1
    $nMsg = TrayGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $TrayExit
    CLOSE()
    EndSwitch
    $Erhalten = TCPRecv($ConnectedSocket, 9999)
    $sErhalten = StringSplit($Erhalten, "|")
    If $sErhalten[1] = "Namen" Then
    $Online = $sErhalten[2]
    For $B = 0 To $sErhalten[2]
    $B1 = $B + 3
    $Namen[$B] = $sErhalten[$B1]
    Next
    EndIf
    If $Erhalten <> "" Then
    $sErhalten = StringSplit($Erhalten, ",")
    If $sErhalten[1] = "Nachricht" Then
    ToolTip($sErhalten[2] & ": " & $sErhalten[4])
    EndIf
    EndIf
    WEnd
    Func _Senden()
    _GUICtrlTreeView_DeleteAll($TreeView1)
    For $A = 0 To $Online
    GUICtrlCreateTreeViewItem($Namen[$A], $TreeView1)
    Next
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Senden
    $Item = _GUICtrlTreeView_GetSelection($TreeView1)
    $Text = _GUICtrlTreeView_GetText($TreeView1, $Item)
    $InputRead = GUICtrlRead($Input)
    GUICtrlSetData($Input, "")
    TCPSend($ConnectedSocket, "Nachricht," & $Name & "," & $Text & "," & $InputRead)
    GUISetState(@SW_HIDE)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc ;==>_Senden
    Func _ToolTip()
    ToolTip("")
    EndFunc ;==>_ToolTip
    Func CLOSE()
    $NameFund = False
    $NamenSenden = "NamenSend|" & $Online - 1 & "|"
    For $C = 0 To $Online
    $C1 = $C - 1
    If $Namen[$C] = $Name Then
    $zahl = $C
    $NameFund = True
    EndIf
    If $NameFund = False Then
    $NamenSenden = $NamenSenden & $Namen[$C] & "|"
    ElseIf $NameFund = True Then
    If $C1 >= 0 Then
    $NamenSenden = $NamenSenden & $Namen[$C1] & "|"
    EndIf
    EndIf
    Next
    TCPSend($ConnectedSocket, $NamenSenden & $zahl)
    Exit
    EndFunc ;==>CLOSE

    [/autoit]

    [spoiler=Server]

    [autoit]

    #include <INet.au3>
    Global $sNamen
    $IP = _GetIP()
    MsgBox (0,"",$IP)
    $zahl = -1
    $zahl1 = $zahl + 1
    $File = @ScriptDir & "\Server.ini"
    FileDelete($File)
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    ;~ Opt("TrayMenuMode",1)

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Serververlauf", 238, 201, 303, 219)
    $Edit1 = GUICtrlCreateEdit("", 3, 3, 232, 196, $ES_READONLY)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    #EndRegion ### END Koda GUI section ###
    $Fenster = False
    Dim $ConnectedSocket[999999]
    Dim $Namen[999999]
    ; Startet den TCP Service
    ;==============================================
    TCPStartup()

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

    ; Erstellt einen lauschenden "SOCKET"
    ;==============================================
    $MainSocket = TCPListen($IP, 31758)
    If $MainSocket = -1 Then Exit
    HotKeySet("!{n}", "_Fenster")
    ; Warten auf eine Client-Verbindung
    ;--------------------

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    EndSwitch
    $ConnectedSocket[$zahl1] = TCPAccept($MainSocket)
    If $ConnectedSocket[$zahl1] >= 0 Then
    $zahl = $zahl + 1
    $zahl1 = $zahl + 1
    ;~ MsgBox(0, "", "Mein Server - Client verbunden", 1)
    $Erhalten = TCPRecv($ConnectedSocket[$zahl], 2048)
    $sErhalten = StringSplit($Erhalten, ",")
    If $sErhalten[1] = "Name" Then
    $Namen[$zahl] = $sErhalten[2]
    ElseIf $sErhalten[1] = "NamenSenden" Then
    $zahl = $zahl - 1
    For $E = 0 To $sErhalten[2]
    $E1 = $E + 3
    $Namen[$E] = $sErhalten[$E1]
    Next
    $Status = False
    For $F = 0 To $sErhalten[2]
    $F1 = $sErhalten[2] + 1
    $F2 = $F - 1
    If $F = $sErhalten[$F1] Then $Status = True
    If $Status = True Then
    $ConnectedSocket[$F] = $ConnectedSocket[$F2]
    EndIf
    Next
    EndIf
    $sNamen = ""
    For $B = 0 To $zahl
    $sNamen = $sNamen & $Namen[$B] & "|"
    Next
    For $C = 0 To $zahl
    TCPSend($ConnectedSocket[$C], "Namen|" & $zahl & "|" & $sNamen)
    Next
    EndIf
    For $A = 0 To $zahl
    $Erhalten = TCPRecv($ConnectedSocket[$A], 9999)
    $sErhalten = StringSplit($Erhalten, ",")
    If $Erhalten <> "" Then
    $Edit1Read = GUICtrlRead($Edit1)
    GUICtrlSetData($Edit1, $Edit1Read & @CRLF & $Erhalten)
    For $D = 0 To $zahl
    If $sErhalten[1] = "Name" Then
    $Namen[$zahl] = $sErhalten[2]
    ElseIf $sErhalten[1] = "Nachricht" Then
    If $Namen[$D] = $sErhalten[3] Then
    TCPSend($ConnectedSocket[$A], $Erhalten)
    EndIf
    EndIf
    Next
    EndIf
    Next
    WEnd
    Func _Fenster()
    If $Fenster = True Then
    GUISetState(@SW_HIDE)
    ElseIf $Fenster = False Then
    GUISetState(@SW_SHOW)
    EndIf
    EndFunc ;==>_Fenster

    [/autoit]

    [spoiler]

    mfg. Jam00

  • Wie schon gesagt hier nochmal.:

    Send

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.0.0
    Author: myName

    Script Function:
    Template AutoIt script.

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListBoxConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTreeView.au3>
    #include <GUIConstants.au3>
    #include <INet.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Hendrik\Favoriten\Eigene Dateien\AutoIt\INC\Benutzeroberfläche\Senden.kxf
    $TDC_Speichern = GUICreate("INC", 202, 205, 316, 269)
    $TreeView1 = GUICtrlCreateTreeView(3, 3, 193, 149)
    $Input = GUICtrlCreateInput("", 3, 156, 193, 21)
    $Senden = GUICtrlCreateButton("Senden", 123, 177, 75, 25, 0)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 47, 177, 75, 25, 0)
    Dim $TDC_Speichern_AccelTable[1][2] = [["{ENTER}", $Senden]]
    GUISetAccelerators($TDC_Speichern_AccelTable)
    GUISetState()
    #EndRegion ### END Koda GUI section ###
    Opt("TrayMenuMode", 1)
    $Name = InputBox("INC", "Gib deinen Namen ein")
    If @error = 1 Then Exit
    Dim $Namen[999999]
    $IP = InputBox("INC", "Die IP des Servers",_GetIP());Hier###Hier###Hier###Hier###Hier###Hier###
    $Port = 31758
    Global $Online

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

    $ConnectedSocket = TCPConnect($IP, $Port)
    If $ConnectedSocket = -1 Then
    MsgBox(16, "Error", "Es ist bei dem Verbindungsversuch ein Fehler aufgetreten, vermutlich ist kein Server gestartet!")
    Exit
    EndIf
    TCPSend($ConnectedSocket, "Name," & $Name)
    While 1
    $Erhalten = TCPRecv($ConnectedSocket, 2048)
    $sErhalten = StringSplit($Erhalten, "|")
    If $sErhalten[1] = "Namen" Then
    $Online = $sErhalten[2]
    For $B = 0 To $sErhalten[2]
    $B1 = $B + 3
    $Namen[$B] = $sErhalten[$B1]
    Next
    ExitLoop
    EndIf
    WEnd
    HotKeySet("{end}", "_ToolTip")
    HotKeySet("^{s}", "_Senden")
    MsgBox(0, "Info", "Drücke Strg+S um eine Nachricht zu senden." & @CRLF & "Drücke Ende um die Nachricht zu löschen")
    $TrayExit = TrayCreateItem("Beenden")
    While 1
    $nMsg = TrayGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $TrayExit
    CLOSE()
    EndSwitch
    $Erhalten = TCPRecv($ConnectedSocket, 9999)
    $sErhalten = StringSplit($Erhalten, "|")
    If $sErhalten[1] = "Namen" Then
    $Online = $sErhalten[2]
    For $B = 0 To $sErhalten[2]
    $B1 = $B + 3
    $Namen[$B] = $sErhalten[$B1]
    Next
    EndIf
    If $Erhalten <> "" Then
    $sErhalten = StringSplit($Erhalten, ",")
    If $sErhalten[1] = "Nachricht" Then
    ToolTip($sErhalten[2] & ": " & $sErhalten[4])
    EndIf
    EndIf
    WEnd
    Func _Senden()
    _GUICtrlTreeView_DeleteAll($TreeView1)
    For $A = 0 To $Online
    GUICtrlCreateTreeViewItem($Namen[$A], $TreeView1)
    Next
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Senden
    $Item = _GUICtrlTreeView_GetSelection($TreeView1)
    $Text = _GUICtrlTreeView_GetText($TreeView1, $Item)
    $InputRead = GUICtrlRead($Input)
    GUICtrlSetData($Input, "")
    TCPSend($ConnectedSocket, "Nachricht," & $Name & "," & $Text & "," & $InputRead)
    GUISetState(@SW_HIDE)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc ;==>_Senden
    Func _ToolTip()
    ToolTip("")
    EndFunc ;==>_ToolTip
    Func CLOSE()
    $NameFund = False
    $NamenSenden = "NamenSend|" & $Online - 1 & "|"
    For $C = 0 To $Online
    $C1 = $C - 1
    If $Namen[$C] = $Name Then
    $zahl = $C
    $NameFund = True
    EndIf
    If $NameFund = False Then
    $NamenSenden = $NamenSenden & $Namen[$C] & "|"
    ElseIf $NameFund = True Then
    If $C1 >= 0 Then
    $NamenSenden = $NamenSenden & $Namen[$C1] & "|"
    EndIf
    EndIf
    Next
    TCPSend($ConnectedSocket, $NamenSenden & $zahl)
    Exit
    EndFunc ;==>CLOSE

    [/autoit]

    recv

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.0.0
    Author: myName

    Script Function:
    Template AutoIt script.

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include <INet.au3>
    Global $sNamen
    $IP = @IPAddress1 ;Hier###Hier###Hier###Hier###Hier###Hier###
    MsgBox(0, "", $IP)
    $zahl = -1
    $zahl1 = $zahl + 1
    $File = @ScriptDir & "\Server.ini"
    FileDelete($File)
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    ;~ Opt("TrayMenuMode",1)

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

    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("Serververlauf", 238, 201, 303, 219)
    $Edit1 = GUICtrlCreateEdit("", 3, 3, 232, 196, $ES_READONLY)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUISetState()
    #EndRegion ### END Koda GUI section ###
    $Fenster = False
    Dim $ConnectedSocket[999999]
    Dim $Namen[999999]
    ; Startet den TCP Service
    ;==============================================
    TCPStartup()

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

    ; Erstellt einen lauschenden "SOCKET"
    ;==============================================
    $MainSocket = TCPListen($IP, 31758)
    If $MainSocket = -1 Then Exit
    HotKeySet("!{n}", "_Fenster")
    ; Warten auf eine Client-Verbindung
    ;--------------------

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    EndSwitch
    $ConnectedSocket[$zahl1] = TCPAccept($MainSocket)
    If $ConnectedSocket[$zahl1] >= 0 Then
    $zahl = $zahl + 1
    $zahl1 = $zahl + 1
    ;~ MsgBox(0, "", "Mein Server - Client verbunden", 1)
    $Erhalten = TCPRecv($ConnectedSocket[$zahl], 2048)
    $sErhalten = StringSplit($Erhalten, ",")
    If $sErhalten[1] = "Name" Then
    $Namen[$zahl] = $sErhalten[2]
    ElseIf $sErhalten[1] = "NamenSenden" Then
    $zahl = $zahl - 1
    For $E = 0 To $sErhalten[2]
    $E1 = $E + 3
    $Namen[$E] = $sErhalten[$E1]
    Next
    $Status = False
    For $F = 0 To $sErhalten[2]
    $F1 = $sErhalten[2] + 1
    $F2 = $F - 1
    If $F = $sErhalten[$F1] Then $Status = True
    If $Status = True Then
    $ConnectedSocket[$F] = $ConnectedSocket[$F2]
    EndIf
    Next
    EndIf
    $sNamen = ""
    For $B = 0 To $zahl
    $sNamen = $sNamen & $Namen[$B] & "|"
    Next
    For $C = 0 To $zahl
    TCPSend($ConnectedSocket[$C], "Namen|" & $zahl & "|" & $sNamen)
    Next
    EndIf
    For $A = 0 To $zahl
    $Erhalten = TCPRecv($ConnectedSocket[$A], 9999)
    $sErhalten = StringSplit($Erhalten, ",")
    If $Erhalten <> "" Then
    $Edit1Read = GUICtrlRead($Edit1)
    GUICtrlSetData($Edit1, $Edit1Read & @CRLF & $Erhalten)
    For $D = 0 To $zahl
    If $sErhalten[1] = "Name" Then
    $Namen[$zahl] = $sErhalten[2]
    ElseIf $sErhalten[1] = "Nachricht" Then
    If $Namen[$D] = $sErhalten[3] Then
    TCPSend($ConnectedSocket[$A], $Erhalten)
    EndIf
    EndIf
    Next
    EndIf
    Next
    WEnd
    Func _Fenster()
    If $Fenster = True Then
    GUISetState(@SW_HIDE)
    ElseIf $Fenster = False Then
    GUISetState(@SW_SHOW)
    EndIf
    EndFunc ;==>_Fenster

    [/autoit]
  • @deepred
    Hä, irgendwie geht das jetzt, aber ich finde keinen Unterschied, ich hatte doch da beim Client auch eine MSGBox um das eizugeben! Und den Server habe ich so gelassen! Wie ich ihn hatte!

    mfg. Jam00