Trying to make a TCP server, client connects and disconnects immediately
Gan via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Feb 5 20:17:55 PST 2015
On Friday, 6 February 2015 at 01:36:17 UTC, Mike Parker wrote:
> On 2/6/2015 9:50 AM, Gan wrote:
>> On Friday, 6 February 2015 at 00:35:12 UTC, Adam D. Ruppe
>> wrote:
>>> On Friday, 6 February 2015 at 00:31:37 UTC, Gan wrote:
>>>> Or am I misunderstanding the receive function? Does it send
>>>> whole
>>>> messages or just message chunks?
>>>
>>> It sends as much as it can when you call it. So if there's
>>> only 12
>>> bytes available when you send it with a 4096 buffer, it will
>>> fill the
>>> first twelve bytes (and return 12) so you can slice it
>>> buffer[0 ..
>>> returnedValue] to get the data.
>>>
>>> If there's more available than the buffer will hold, that
>>> data will be
>>> held on to until next time you call receive. If 5000 bytes
>>> come off
>>> the network, it will return 4096 the first time, then next
>>> time
>>> through the loop, it will return the remaining 904.
>>
>> How can you distinguish between different packets that get
>> sent? Won't
>> they all be merged to a giant blob of data?
>
> You need to give each of your packets a header. At a minimum
> you'll want a message ID and message length. When a message
> comes in, you use the length field to determine where one
> packet ends and the next one begins.
Oh sweet. Though if one message length is off by even 1 byte,
then all future messages get corrupted?
More information about the Digitalmars-d-learn
mailing list