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
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
#include <GUIConstants.au3>
#include <INet.au3>
#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
$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
[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)
#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()
; Erstellt einen lauschenden "SOCKET"
;==============================================
$MainSocket = TCPListen($IP, 31758)
If $MainSocket = -1 Then Exit
HotKeySet("!{n}", "_Fenster")
; Warten auf eine Client-Verbindung
;--------------------
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
[spoiler]