TCPRecv, In einer If funktion in der das aktuell bearbeitende packet über TCpRecv empfangen wurde ein neues Packet dazu enpfangen?

  • Hiho leute !!!

    Bisschen komisch der Titel aber naja.....

    Auf jedenfall geht es darum das ich ein großes Problem mit dem TCPRecv habe und zwar... es ist ja so das man immer einzelne Packete empfangen kann und wenn man dann über eine IF funktion ein Packet abfangen will wenn der gesuchte Text or Hex drin steht, wird ja indem sinne für die If Funktion der DatenTransfer also die Packete gestoppt und nur das aktuell gefundene Packet barbeitet , aber da leider der Text in 2 Packete geteilt wird bekomme ich immer einen crash von programm wenn ich die _Stringbetween Funktion benutzen will wobei der Start Text in dem ersten Packet steht (also das Packet in dieser If) und der End-text im eigentlich sofort nachkommenden 2 Packet steht, wenn ich versuche in der If funktion TCPRecv zu benutzen zeigt er mir immer das aktuelle packet an und nit das nächste......

    Hoffe ihr versteht mich und könnt mir helfen bzw.. es gibt ne Lösung !

    Wie gesgat in Kurz-Fassung: Ich will legidlich in einer If Funktion mehrere Packete bearbeiten anstatt nur das akutelle.

    Hier ein Beispiel:

    Einkommende Packet 1: 00 FF FF 1E FF FF

    If StringinStr(TCPRecv(xx,xx),"FF FF 1E") Then
    _StringBetween(TCPRecv(xx,xx),"00","00")

    Endif

    Einkommende Packet 2 (nachdem die If ausgeführt und beendet wurde empfangt er erst wieder dieses packet): FF 1E FF FF FF FF 00


    Hoffe ihr versteht es jez....


    Ich danke schonmal im vorraus !!!!

    • Offizieller Beitrag

    Hallo

    Ich würde einfach mehrere Parts mit einem Schwung senden, dass könnte dann ca so aussehen:

    Spoiler anzeigen

    Server:

    Code
    #include  TCPStartup() $IP = @IPAddress1 $PORT = 9876 $List = TCPListen($IP, $PORT) Global $Con = -1 While $Con = -1 $Con = TCPAccept($List) Sleep(50) WEnd  While 1 $Recv = TCPRecv($Con, 1024) If $Recv <> '' Then $aStrSpl = StringSplit($Recv, Chr(1)) If StringInStr($aStrSpl[1], "FF FF 1E") Then $aBetw = _StringBetween($aStrSpl[2], "00", "00") MsgBox(0,"",$aStrSpl[3]&@CRLF&"Paket 1: "&$aStrSpl[1]&@CRLF&"Paket 2: "&$aBetw[0]) ExitLoop EndIf EndIf WEnd While 1 TCPSend($Con, "Exit") If @error Then ExitLoop WEnd  TCPCloseSocket($Con) TCPShutdown()


    Client:

    Ich habe als Separator jetzt Chr(1) genommen.

    Mfg Spider

  • hi peethebee, ich weiss gerade nit wie du das mit dem Variablen meisnt !? könntest du mir evlt. nen beispiel code zeigen ?

    Und an gtaspider, ich will ja packete empfangen die dynamisch erstellt werden das heisst ich hab keinen einfluss auf die versand-art der püackete ich bekomme immer ein packet mit göße von 1024 (das 1) und das zweite mit einer größe von ca. 345 (2tePackete) wobei sich die größe immer verändern kann , das einzige was immer gleich is das am anfang der 00 und am ende beim zweiten ne 00 is....

    Hoffe ihr versteht mich und könnte mit weiterhelfen !!


    MfG reeZZer