Jump to content
Leo2797

Fastest TCPRecv - (Moved)

Recommended Posts

I'm trying to listen to a certain connection and wait for a packet that contains "C8420000", is there a faster way I could do this? am I using StringInStr in a correct way? does adding a huge buffer size make room for the amount of bytes it can read per single read or does it make it slower? is opening one connection for receive and one for send a good idea or can I use the same socket for receiving and sending (I'll be sending a packet after doing some work on the received data so I need a send socket) any tips would be appreciated, thanks.

 

#include <Misc.au3>

TCPStartup()

$receive = TCPConnect("127.0.0.1", 16000)
$send = TCPConnect("127.0.0.1", 16000)

While 1
   $data = TCPRecv($receive, 1000000, 1)
   if StringInStr($data, "C8420000", 2) Then
      ;do stuff with $data
   EndIf
WEnd

 

Share this post


Link to post
Share on other sites

Moved to the appropriate forum.

Moderation Team


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

I'm not facing any, just trying to make it receive data as fast as possible so I was wondering if doing something like TCPRecv($receive, 1000000, 1)  where the buffer size is large would make it quicker or am I actually slowing it down by doing so and should narrow it down to like 1024 maybe

Share this post


Link to post
Share on other sites

TCP MTU over ethernet is 1500 bytes incl. headers, leaving at worst 1460 bytes of payload per segment. Since it's a stream protocol, you need a buffer a few times larger than that to guarantee you don't get buffer overflow and related errors. Theoretical maximum is 64K -1, anything larger is pointless. I use a ~16K buffer myself to avoid any data loss.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...