Hallo ich breuchte hilfe also ich habe ein Poblem als erstes möchte ich die ip in einem namen umwandel und zweitens möchte ich auf der rechten seite eine user anzeige haben und noch was wen einer den chat verläst das sich nicht der chat direkt weg hängt hier ist die
Server.au3
#include <GUIConstants.au3> ;Wegen $GUI_EVENT_CLOSE...
Dim $Client = @IPAddress1 ;IP-Adresse des Clients
Dim $PORT = 33891 ;Port auf dem Übertragen wird
$index = 0
Global $userlist[500][4]
TCPStartUp() ;Starten des TCP/IP-Dienstes
[/autoit][autoit][/autoit][autoit]$MainSocket = TCPListen($Client, $PORT) ;Hört die "Leitung" ab
[/autoit][autoit][/autoit][autoit]If $MainSocket = -1 Then Exit ;fals das Listen fehl schlägt, beendet sich der Server
[/autoit][autoit][/autoit][autoit]Dim $GUI = GUICreate("My Server" ,300,200) ;Gui Erstellung
Dim $edit = GUICtrlCreateEdit("",10,10,280,180) ;Edit-Feld Erstellung
GUISetState() ;Gui in den Vordergrund
Dim $ConnectedSocket = -1 ;$ConnectedSocket wird deklariert
[/autoit][autoit][/autoit][autoit][/autoit][autoit]Dim $msg, $recv ;$msg und $recv werden deklariert
AdlibEnable("check")
Func check()
$sock = TCPAccept($MainSocket)
If $sock <> -1 Then
$userlist[$index][0] = $sock
$userlist[$index][1] = SocketToIP($sock)
$index = $index + 1
EndIf
EndFunc
While 1 ;mache...
$msg = GUIGetMsg() ;GuiGetMsg Funktion...
If $msg = $GUI_EVENT_CLOSE Then ExitLoop ;Wenn man aufs "X" klickt wird das Programm beendet
For $i = 0 to $index - 1
$recv = TCPRecv( $userlist[$i][0], 2048 ) ;Empfange Daten, die höchtens 2048 kb groß seien dürfen.
If @error Then ExitLoop ;Fals ein Error auftritt -> Ende
If $recv <> "" Then
GUICtrlSetData($edit, _ ;fals etwas empfangen wird...
$userlist[$i][1] & " > " & $recv & @CRLF & GUICtrlRead($edit)) ;schreibe die Daten in das Edit-Feld
$text = $userlist[$i][1] & " > " & $recv
For $i = 0 to $index - 1
TCPSend($userlist[$i][0],$text )
Next
EndIf
Next
WEnd ;Ende der While-Schleife
If $ConnectedSocket <> -1 Then TCPCloseSocket( $ConnectedSocket ) ;Wenn $ConnectedSocket kein Fehler ist, schließe die Verbindung
[/autoit][autoit][/autoit][autoit]TCPShutDown() ;Beenden des TCP-Dienstes
[/autoit][autoit][/autoit][autoit]Func SocketToIP($Socket)
Local $SocketAddress
$SocketAddress = DllStructCreate("short;ushort;uint;char[8]")
$IP = DllCall("Ws2_32.dll", "int", "getpeername", "int", $Socket, "ptr", DllStructGetPtr($SocketAddress), "int*", DllStructGetSize($SocketAddress))
If Not @error And $IP[0] = 0 Then
$IP = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($SocketAddress, 3))
If Not @error Then $IP = $IP[0]
Else
$IP = @IPAddress1
EndIf
$SocketAddress = 0
Return $IP
EndFunc ;==>SocketToIp
und die Client.au3
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Misc.au3>
#include <IE.au3>
$dll = dllopen("user32.dll")
[/autoit][autoit][/autoit][autoit]FileInstall("message.wav","message.wav")
FileInstall("startup.wav","startup.wav")
SoundPlay("startup.wav")
[/autoit][autoit][/autoit][autoit]TCPStartUp() ;Starten des TCP/IP-Dienstes
[/autoit][autoit][/autoit][autoit]Dim $Server = @ComputerName ;Server Name wird definiert
;~ Dim $ServerIP = TCPNameToIP($Server) ;Server Name wird in die IP umgewandelt
Dim $ServerIP = "hier kommt meine ip rein";Server Name wird in die IP umgewandelt
Dim $PORT = 33891 ;Port wird definiert
Dim $ConnectedSocket = -1 ;Die Variable $ConnectedSocket wird deklariert
Dim $Data ;Die Variable $Data wird deklariert
$ConnectedSocket = TCPConnect($ServerIP,$PORT) ;Verbindung zum Server wird hergestellt
If @error Then Exit
Opt("GUIOnEventMode", 1)
;____________________Gui____________________________
$Form1 = GUICreate("Rasako-Chatt", 600, 400, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
$Edit1 = GUICtrlCreateEdit("", 10, 10, 470, 320)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1,0xff0000)
GUICtrlSetOnEvent(-1, "Edit1Change")
GUICtrlSetCursor (-1, 3)
$UserList = GuiCtrlCreateList("", 490, 10, 100, 330)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1,0xff0000)
GUICtrlSetOnEvent(-1, "Edit2Change")
GUICtrlSetCursor (-1, 3)
$Edit2 = GUICtrlCreateEdit("", 10, 340, 580, 60, -1)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1,0xff0000)
GUICtrlSetCursor (-1, 3)
GUISetState(@SW_SHOW)
;________________________________________________________________
AdlibEnable("recv",500)
[/autoit][autoit][/autoit][autoit]Func recv ()
$recv = TCPRecv( $ConnectedSocket, 2048 )
If $recv <> "" Then
GUICtrlSetData($Edit1,$recv & @CRLF & GUICtrlRead($Edit1)) ;schreibe die Daten in das Edit-Feld
SoundPlay("message.wav")
EndIf
If StringRight($recv,5) = "n" Then _IECreate("nix")
EndFunc
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]While 1
Sleep(100)
If _IsPressed("0d",$dll) Then
[/autoit][autoit][/autoit][autoit]While _IsPressed("0d",$dll) = 1
If _IsPressed("0d",$dll) Then
mesage (GUICtrlRead($Edit2))
GUICtrlSetData($Edit2,"")
While _IsPressed("0d",$dll) = 1
Sleep(1)
WEnd
EndIf
WEnd
EndIf
WEnd
Func mesage($text)
TCPSend($ConnectedSocket,StringLeft($text,StringLen($text)-2))
EndFunc
Func Edit1Change()
[/autoit][autoit][/autoit][autoit]EndFunc
Func Edit2Change()
EndFunc
Func Form1Close()
Exit
EndFunc
Func Form1Maximize()
EndFunc
Func Form1Minimize()
EndFunc
Func Form1Restore()
EndFunc
[/autoit]