Hi @all ich habe einen TCP Chat erstellt und jetzt passiert nix wenn man auf den BUtton klickt (nicht mehr)
Client
#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit];HotKeySet("{ENTER}","_senden2")
Global Const $WS_POPUP = 0x80000000
Global Const $WS_MAXIMIZEBOX = 0x00010000
Global Const $WS_MINIMIZEBOX = 0x00020000
Global Const $WS_SIZEBOX = 0x00040000
Global Const $BS_MULTILINE = 0x2000
TCPStartup()
Dim $szServerPC = @ComputerName
Dim $szIPADDRESS = TCPNameToIP($szServerPC)
Dim $nPORT = 33891
Dim $ConnectedSocket = -1
$ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)
[/autoit] [autoit][/autoit] [autoit]Dim $szData
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If @error Then
MsgBox(4112, "Fehler", "TCPConnect schlug mit folgendem WSA-Fehler fehl: " & @error)
Else
While 1
$name = InputBox("Name", "Bitte deinen Name eingeben:")
;TCPSend($ConnectedSocket,$name)
Sleep(1000)
_senden()
WEnd
EndIf
Func _senden()
$gui = GUICreate("TCP Send", 300, 200)
$szData = GUICtrlCreateInput("", 10, 10)
$sendenbutton = GUICtrlCreateButton("Senden", 10, 50)
GUISetState()
;If @error Or $szData = "" Then Exit
;TCPSend($ConnectedSocket, GUICtrlRead($szData))
;TCPSend($ConnectedSocket, $name)
If @error Then Exit
While 1
$msg = GUIGetMsg()
$readdeselementes = GUICTrlREad($szData)
Switch $msg
Case $sendenbutton
If ($readdeselementes) = ("") THen
TCPSend($ConnectedSocket,$name & " " & "(" & @Hour & ":" & @MIN & ")" & @CRLF & ":-)")
;TCPSend($ConnectedSocket, $name)
Else
TCPSend($ConnectedSocket,($name & " " & "(" & @Hour & ":" & @MIN & ")" & @CRLF & $readdeselementes))
;Sleep(0)
;TCPSend($ConnectedSocket, $name)
EndIf
Case - 3
Exit
EndSwitch
WEnd
EndFunc ;==>_senden
Server
;SERVER!! Starte mich zuerst !!!!!!!!!!!!!!!
#include <GUIConstants.au3>
Global Const $WS_POPUP = 0x80000000
Global Const $WS_MAXIMIZEBOX = 0x00010000
Global Const $WS_MINIMIZEBOX = 0x00020000
Global Const $WS_SIZEBOX = 0x00040000
Global Const $BS_MULTILINE = 0x2000
Dim $szIPADDRESS = @IPAddress1
Dim $nPORT = 33891
TCPStartUp()
[/autoit] [autoit][/autoit] [autoit]$MainSocket = TCPListen($szIPADDRESS, $nPORT,2)
[/autoit] [autoit][/autoit] [autoit]If $MainSocket = -1 Then Exit
[/autoit] [autoit][/autoit] [autoit]Dim $GOOEY = GUICreate("Mein Server (IP: " & $szIPADDRESS & ")",300,200,0,0)
Dim $edit = GUICtrlCreateEdit("",10,10,280,180)
GUICTrlSEtState($edit,$GUI_DISABLE)
GUISetState()
Dim $ConnectedSocket = -1
Do
$ConnectedSocket = TCPAccept($MainSocket)
Until $ConnectedSocket <> -1
Dim $szIP_Accepted = SocketToIP($ConnectedSocket)
Dim $msg, $recv
While 1
$msg = GUIGetMsg()
$name = TCPRecv($ConnectedSocket,2048)
;$recv = TCPRecv($ConnectedSocket, 2048)
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If @error Then ExitLoop
; Erneuert das Edit Steuerelement mit dem, was wir empfangen haben.
;----------------------------------------------------------------
If $recv <> "" Then GUICtrlSetData($edit,$name ) ;& " " & "(" & (@HOUR & " " & ":" & @MIN) & ")" & @CRLF & $name &@CRLF & GUICTrlRead($edit))
WEnd
If $ConnectedSocket <> -1 Then TCPCloseSocket( $ConnectedSocket )
[/autoit] [autoit][/autoit] [autoit]TCPShutDown()
[/autoit] [autoit][/autoit] [autoit]; Funktion um die IP Adresse eines verbundenen Sockets wiederzugeben.
;----------------------------------------------------------------------
Func SocketToIP($SHOCKET)
Local $sockaddr = DLLStructCreate("short;ushort;uint;char[8]")
Local $aRet = DLLCall("Ws2_32.dll","int","getpeername","int",$SHOCKET, _
"ptr",DLLStructGetPtr($sockaddr),"int_ptr",DLLStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DLLCall("Ws2_32.dll","str","inet_ntoa","int",DLLStructGetData($sockaddr,3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
Return $aRet
EndFunc
Ich hoffe mir kann da jemand Helfen
PS: Der Chat funktioniert aber der Button reagiert auf einmal nicht mehr zum Senden im Client