Hallo zusammen,
ich hab mal einen Chat geschrieben und will noch ein par Extras einbauen.
Der Chat funktioniert wunderbar, nur stehe ich bei der Umstzung der Extras ziemlich auf dem Schlauch.
Der Client:
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
$gui = GUICreate(@UserName, 850, 300)
GUISetFont(11, 700, 1, "Lucida Console")
$Edit1 = GUICtrlCreateEdit("", 0, 0, 650, 250, $ES_READONLY+$WS_VSCROLL+$ES_MULTILINE)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
$Input1 = GUICtrlCreateEdit("", 0, 250, 550, 50, $ES_AUTOVSCROLL+$ES_WANTRETURN)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
$button = GUICtrlCreateButton("hohladen", 550, 250, 100, 25)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
$button2 = GUICtrlCreateButton("ruterladen", 550, 275, 100, 25)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
$list = GUICtrlCreateList("", 650, 0, 200, 310)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xffffff)
GUISetState()
GUISetBkColor(0x000000)
$dummy = GUICtrlCreateDummy()
Dim $AccelKeys[1][2]=[["{Enter}", $dummy]]
GUISetAccelerators($AccelKeys)
TCPStartUp()
$Socket = TCPConnect(@IPAddress1,3333)
If @error Then Exit
$SocketDatei = TCPConnect(@IPAddress1,3334)
If @error Then Exit
While sleep(10)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $dummy
_Senden()
Case $button
_DateiSenden()
EndSwitch
_Empfangen()
WEnd
Func _Empfangen()
$Message = TCPRecv($Socket,2048)
If $Message <> "" Then
GUICtrlSetData($Edit1, GUICtrlRead($Edit1) & @crlf & $Message)
EndIf
EndFunc
Func _Senden()
[/autoit] [autoit][/autoit] [autoit]If GUICtrlRead($Input1) <> "" Then TCPSend($Socket,"<" & @UserName & "> "& GUICtrlRead($Input1))
GUICtrlSetData($Input1, "")
EndFunc
Func _DateiSenden()
$filep = FileOpenDialog ("Datei wäheln", @DesktopDir, "(*.*)" )
If $filep <> "" Then
$file = FileRead($filep)
$name = StringSplit($filep , "")
$name1 = $name[$name[0]]
While StringLen($name1) < 2048
$name1 = $name1 & "_"
WEnd
$bin = StringToBinary($file)
TCPSend($SocketDatei, $name1)
While $file <> ""
$r = StringLeft($file, 2048)
$file = StringTrimLeft($file, 2048)
TCPSend($SocketDatei, $r)
WEnd
TCPSend($Socket, "<Datei von " & @UserName & "> " & $name[$name[0]])
EndIf
EndFunc
Der Server:
Spoiler anzeigen
;Server
Global $MaxConnect = 50
TCPStartup() ; TCP starten
$Socket = TCPListen(@IPAddress1, 3333, $MaxConnect)
Dim $Verbindung[$MaxConnect]
For $i = 0 To UBound($Verbindung) - 1
$Verbindung[$i] = -1
Next
While 1
For $i = 0 To $MaxConnect - 1
If $Verbindung[$i] = -1 Then
$Verbindung[$i] = TCPAccept($Socket)
TCPSend($Verbindung[$i], "Willkommen im Chat")
EndIf
If $Verbindung[$i] <> -1 Then
$Resv = TCPRecv($Verbindung[$i], 2048)
If @error Then
TCPCloseSocket($Verbindung[$i])
$Verbindung[$i] = -1
EndIf
If $Resv <> "" Then
For $j = 0 To $MaxConnect - 1
If $Verbindung[$j] <> -1 Then TCPSend($Verbindung[$j], $Resv)
Next
EndIf
EndIf
Next
WEnd
Der Server zum hochladen von Dateien:
Spoiler anzeigen
;Server für dateien
Global $MaxConnect = 50
TCPStartup() ; TCP starten
$Socket = TCPListen(@IPAddress1, 3334, $MaxConnect)
Dim $Verbindung[$MaxConnect]
For $i = 0 To UBound($Verbindung) - 1
$Verbindung[$i] = -1
Next
While 1
For $i = 0 To $MaxConnect - 1
If $Verbindung[$i] = -1 Then
$Verbindung[$i] = TCPAccept($Socket)
EndIf
If $Verbindung[$i] <> -1 Then
$Resv = TCPRecv($Verbindung[$i], 2048)
If @error Then
TCPCloseSocket($Verbindung[$i])
$Verbindung[$i] = -1
EndIf
$name = $Resv
While StringRight($name, 1) = "_"
$name = StringTrimRight($name, 1)
WEnd
ConsoleWrite($name)
While $Resv <> ""
$Resv = TCPRecv($Verbindung[$i], 2048)
$q = BinaryToString($Resv)
FileWrite($name, $q)
WEnd
EndIf
Next
WEnd
Was der Chat schon kann:
-Mit bis zu 50 Teilnehmern schreiben
-Dateien auf den Server laden
Jetzt die Extras, die ich einbauen will:
-in der Liste $list sollen alle Benutzernamen von Chatteilnehmern sein
-es sollen zu Beginn alles vervügbaren IP-Adressen nach den Ports durchprobiert werden, damit man den Server überall starten kann, ohne die IP-Adresse zu ändern
-beim Hochladen von dateien auf dn Server soll man ganz normal weiterchatten können, bisher muss man warten, bis die Datei vollsändig hohgeladen ist.
-jeder soll die hochgeladenen Datein natürlich auch wieder runterladen können.
Wie gesagt, ich stehe da irgendwie ziemlich auf dem Schlauch und hoffe, ihr könn mir helfen