TCPRec , bei eingehenden daten , daten in eine Editbox schreiben
-
- [ offen ]
-
Jeahaha -
14. März 2012 um 15:25 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Heyho,
Du machst es dir ein wenig zu einfach, schau dir dazu die Beispiele in der Hilfe an. Du musst TCPRecv immer wieder in einer Schleife abrufen, der Befehl gibt nämlich nur dann WErte zurück, wenn auch was empfangen wurde, und das kann immer ein wenig dauern Also irgendwie
[autoit]Local $sRecv = ""
[/autoit]
While $sRecv = ""
$sRecv = TCPRecv($hAccept,1024)
Sleep(10)
WendGruß
Spider -
geht i-wie net , oder ich kom net mit klar ;D ich habe es in die While eingebastelt die auch die Buttons abruft:
Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_outfile=server.exe
#AutoIt3Wrapper_Res_Fileversion=0.0.0.41
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=Jeahaha
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#Include <Timers.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#Region ### START Koda GUI section ### Form=c:\users\timo2\desktop\programieren\autoit\tcptests\server.kxf
$Form1 = GUICreate("", 619, 362, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 617, 337, BitOR($ES_READONLY,$WS_HSCROLL,$WS_VSCROLL))
$Input1 = GUICtrlCreateInput("", 0, 336, 529, 21)
$Button1 = GUICtrlCreateButton("", 536, 336, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
Dim $Form1_AccelTable[1][2] = [["{ENTER}", $Button1]]
GUISetAccelerators($Form1_AccelTable)
#EndRegion ### END Koda GUI section ###Global $log = "log.txt"
[/autoit] [autoit][/autoit] [autoit]If FileExists($log) Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox( 0 , "" , "Hallo" , 2 )
Else
_FileCreate( $log )
MsgBox( 0 , "" , "Hallo" , 2 )
EndIf_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Server Gestartet" )
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Server Gestartet" & @CRLF , 1 )$IP = "127.0.0.1" ; IP
[/autoit] [autoit][/autoit] [autoit]TCPStartUp()
[/autoit] [autoit][/autoit] [autoit]$MainSocket = TCPListen($IP, 1024, 100 )
[/autoit] [autoit][/autoit] [autoit]
If $MainSocket = -1 Then ExitWhile 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
TCPCloseSocket( $MainSocket )
TCPShutdown( )
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Server Gestopt" )
Exit
Case $Button1
$inp = GUICtrlRead($Input1)
If $inp = "/exit" Then
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "/exit" )
TCPCloseSocket( $MainSocket )
TCPShutdown()
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Server Gestopt" )
Exit
EndIfIf $inp = "/clearlog" Then
[/autoit] [autoit][/autoit] [autoit]
FileDelete( $log )
_FileCreate( $log )
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "/clearlog" )
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Log geleert (log.txt)" )
GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "log geleert" & @CRLF , 1 )
EndIfIf $inp = "/clear" Then
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Geleert" & @CRLF )
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "/clear" )
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Edit geleert" )
EndIfIf $inp = "/help" Then
[/autoit] [autoit][/autoit] [autoit]
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "/help" )
GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Hilfe:" & @CRLF , 1 )
GUICtrlSetData( $Edit1 , "/exit - Beenden" & @CRLF , 1 )
GUICtrlSetData( $Edit1 , "/clearlog - Logdatei leeren" & @CRLF , 1 )
GUICtrlSetData( $Edit1 , "/clear - Verlauf leeren" & @CRLF , 1 )
GUICtrlSetData( $Edit1 , "/help - Hilfe aufrufen" & @CRLF , 1 )
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Hilfe aufgerufen!" )
EndIf
GUICtrlSetData( $Input1 , "" )
EndSwitch$ConnectedSocket = TCPAccept( $MainSocket)
[/autoit] [autoit][/autoit] [autoit]
If $ConnectedSocket >= 0 Then
$conip = SocketToIP($ConnectedSocket)
$conip2 = $conip
GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Eingehende Verbindung" & @CRLF, 1 )
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Eingehende Verbindung " & $conip2 )$rec = TCPRecv( $MainSocket , 2048 )
[/autoit] [autoit][/autoit] [autoit]
If $rec <> "" Then GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & $rec & @CRLF , 1 )
EndIf$sRecv = TCPRecv($MainSocket,1024)
[/autoit] [autoit][/autoit] [autoit]
If $sRecv <> "" Then
GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & $sRecv & @CRLF , 1 )
_FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & $sRecv )
EndIf
Sleep(1)
WEnd$szIP_Accepted = SocketToIP($ConnectedSocket)
[/autoit] [autoit][/autoit] [autoit]Func SocketToIP($SHOCKET)
[/autoit] [autoit][/autoit] [autoit]
Local $sockaddr, $aRet$sockaddr = DllStructCreate("short;ushort;uint;char[8]")
[/autoit] [autoit][/autoit] [autoit]$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
[/autoit] [autoit][/autoit] [autoit]
"ptr", DllStructGetPtr($sockaddr), "int*", 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
[/autoit] [autoit][/autoit] [autoit]Return $aRet
[/autoit]
EndFunc