Hallo,
ich schreibe momentan ein Chat über TCP. Das Problem ist ich kann was an den Server schiken, aber der Server nicht zurück zum Client.
Client
#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
#include <GuiIPAddress.au3>
Global $socket, $connect = 0, $TempSocket, $socket2, $zahl = 0
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Client", 664, 334, 241, 111)
$Group1 = GUICtrlCreateGroup("Benutzer", 4, 0, 197, 241)
$ListView1 = GUICtrlCreateListView("", 10, 14, 186, 222)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Chat", 208, 2, 453, 329)
$ListView2 = GUICtrlCreateListView("", 214, 16, 442, 286)
$Input1 = GUICtrlCreateInput("", 216, 306, 387, 21)
$Button1 = GUICtrlCreateButton("Senden", 608, 306, 47, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Login", 4, 242, 197, 89)
$Label1 = GUICtrlCreateLabel("ServerIP:", 12, 258, 48, 17)
$IPAddress1 = _GUICtrlIpAddress_Create($Form1, 62, 254, 130, 21)
_GUICtrlIpAddress_Set($IPAddress1, FileRead("serverip.ini"))
$Button2 = GUICtrlCreateButton("Login", 12, 280, 179, 25)
$Label = GUICtrlCreateLabel("Login Status", 14, 308, 179, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
TCPSend($socket, "#Exit:" & @ComputerName)
TCPCloseSocket($socket)
TCPShutdown()
Exit
Case $Button1
TCPSend($socket, GUICtrlRead($Input1))
Case $Button2
TCPStartup()
$socket = TCPConnect(_GUICtrlIpAddress_Get($IPAddress1), 65432)
If $socket = -1 Then
GUICtrlSetData($Label, "Server läuft nicht.")
MsgBox(0, "Fehler", "Server läuft nicht.")
Else
$socket2 = TCPListen(_GUICtrlIpAddress_Get($IPAddress1), 65431, 100)
TCPSend ($socket,"listen")
Do
$TempSocket = TCPAccept($socket2)
Until $TempSocket <> -1
TCPSend($socket, "gefunden")
Do
TCPSend($socket, "#Name:" & @ComputerName)
$rec = TCPRecv($socket2, 2048)
Until $rec <> "ok"
TCPSend($socket, "#Name:" & @ComputerName)
GUICtrlSetData($Label, "Erfolgreich eingelogt.")
GUICtrlSetState($Button1, $GUI_ENABLE)
GUICtrlSetState($Button2, $GUI_DISABLE)
$connect = 1
EndIf
EndSwitch
If $connect = 1 Then
$rec = TCPRecv($socket2, 2048)
If $rec <> "" Then
GUICtrlCreateListViewItem(@HOUR & ":" & @MIN & "|Server|" & $rec, $ListView2)
EndIf
EndIf
WEnd
Server
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <GuiIPAddress.au3>
Global $sClient[1][2], $socket
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Server", 664, 334, 241, 111)
$Group1 = GUICtrlCreateGroup("Benutzer", 4, 0, 197, 241)
$ListView1 = GUICtrlCreateListView("Computername", 10, 14, 186, 222)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Chat", 208, 2, 453, 329)
$ListView2 = GUICtrlCreateListView("Zeit|Computername|Text ", 214, 16, 442, 286)
$Input1 = GUICtrlCreateInput("", 216, 306, 387, 21)
$Button1 = GUICtrlCreateButton("Senden", 608, 306, 47, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Login", 4, 242, 197, 89)
$Label1 = GUICtrlCreateLabel("ServerIP:", 12, 258, 48, 17)
$IPAddress1 = _GUICtrlIpAddress_Create($Form1, 62, 254, 130, 21)
_GUICtrlIpAddress_Set($IPAddress1, @IPAddress1)
$Button2 = GUICtrlCreateButton("Server starten", 12, 280, 179, 25)
$Label = GUICtrlCreateLabel("Server Status", 14, 308, 179, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$benutzer = GUICtrlRead (GUICtrlRead ($ListView1))
If $benutzer <> "" Then
For $i = 0 To UBound ($sClient)-1
If $benutzer = $sClient[$i][1] & "|" Then
For $j = 1 To 10
TCPSend ($sClient[$i][0],GUICtrlRead ($Input1))
Sleep (100)
Next
MsgBox (0,"","Gesendet")
EndIf
Next
Else
MsgBox (0,"Fehler","Bitte ein benutzer auswählen")
EndIf
Case $Button2
TCPStartup()
$socket = TCPListen(@IPAddress1, 65432, 100)
If $socket = -1 Then
GUICtrlSetData($Label, "Port Falsch.")
MsgBox(0, "ERROR", "Port Falsch")
Else
TCPSend($socket, "#Name:" & @ComputerName)
GUICtrlSetData($Label, "Server gestartet")
GUICtrlSetState($Button1, $GUI_ENABLE)
GUICtrlSetState($Button2, $GUI_DISABLE)
FileDelete("serverip.ini")
FileWrite("serverip.ini", @IPAddress1)
EndIf
EndSwitch
$TempSocket = TCPAccept($socket)
If $TempSocket <> -1 Then
ReDim $sClient[UBound ($sClient)+1][4]
$sClient[UBound($sClient)-2][0] = $TempSocket
Do
$rec = TCPRecv($sClient[UBound($sClient)-2][0], 2048)
Until $rec = "listen"
Do
$sClient[UBound($sClient)-2][3] = TCPConnect (@IPAddress1,65431)
Until $sClient[UBound($sClient)-2][3] <> -1
Do
$rec = TCPRecv($sClient[UBound($sClient)-2][0], 2048)
Until $rec <> ""
EndIf
For $i = 0 To UBound($sClient) - 1
$rec = TCPRecv($sClient[$i][0], 2048)
If $rec <> "" Then
If StringInStr($rec, "#Name:") Then
Do
TCPSend ($sClient[$i][0],"ok")
$rec2 = TCPRecv($sClient[$i][0], 2048)
Until $rec2 <> "back"
$sClient[$i][1] = StringReplace($rec, "#Name:", "")
GUICtrlCreateListViewItem ($sClient[$i][1],$ListView1)
MsgBox (0,"","senden")
TCPSend ($sClient[$i][0],"test")
ElseIf StringInStr($rec, "#Exit:") Then
;_GUICtrlListView_GetItemCount
Else
GUICtrlCreateListViewItem (@HOUR & ":" & @MIN & "|" & $sClient[$i][1] & "|" & $rec,$ListView2)
;MsgBox(0, $sClient[$i][1], $rec)
EndIf
EndIf
Next
WEnd
;~ Local $start = TimerInit()
;~ Do
;~ $ConnectedSocket = TCPAccept($socket)
;~ Until $ConnectedSocket <> -1 Or (TimerDiff($start) > 25000)
;~ $sClient[0][0] = $ConnectedSocket