TCPRec , bei eingehenden daten , daten in eine Editbox schreiben

    • 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 = ""
    While $sRecv = ""
    $sRecv = TCPRecv($hAccept,1024)
    Sleep(10)
    Wend

    [/autoit]

    Gruß
    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 ****
    #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 ****

    [/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #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 ###

    [/autoit] [autoit][/autoit] [autoit]

    Global $log = "log.txt"

    [/autoit] [autoit][/autoit] [autoit]

    If FileExists($log) Then
    MsgBox( 0 , "" , "Hallo" , 2 )
    Else
    _FileCreate( $log )
    MsgBox( 0 , "" , "Hallo" , 2 )
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Server Gestartet" )
    GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & "Server Gestartet" & @CRLF , 1 )

    [/autoit] [autoit][/autoit] [autoit]

    $IP = "127.0.0.1" ; IP

    [/autoit] [autoit][/autoit] [autoit]

    TCPStartUp()

    [/autoit] [autoit][/autoit] [autoit]

    $MainSocket = TCPListen($IP, 1024, 100 )
    If $MainSocket = -1 Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $inp = "/clearlog" Then
    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 )
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $inp = "/clear" Then
    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" )
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $inp = "/help" Then
    _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

    [/autoit] [autoit][/autoit] [autoit]

    $ConnectedSocket = TCPAccept( $MainSocket)
    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 )

    [/autoit] [autoit][/autoit] [autoit]

    $rec = TCPRecv( $MainSocket , 2048 )
    If $rec <> "" Then GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & $rec & @CRLF , 1 )
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $sRecv = TCPRecv($MainSocket,1024)
    If $sRecv <> "" Then
    GUICtrlSetData( $Edit1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & $sRecv & @CRLF , 1 )
    _FileWriteToLine( $log , 1 , @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " & $sRecv )
    EndIf
    Sleep(1)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    $szIP_Accepted = SocketToIP($ConnectedSocket)

    [/autoit] [autoit][/autoit] [autoit]

    Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

    [/autoit] [autoit][/autoit] [autoit]

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

    [/autoit] [autoit][/autoit] [autoit]

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
    "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

    [/autoit] [autoit][/autoit] [autoit]

    $sockaddr = 0

    [/autoit] [autoit][/autoit] [autoit]

    Return $aRet
    EndFunc

    [/autoit]