Hello David,

> How do I know the maximum size possible?

at receiving side, specially depending on the speed of your own program
you mostly never get above 8 kb. However I have seen receiving packets
10 time as high. But you dont have to care mutch, if you receive not
all, then OnDataAvailable is immediatly called again, meaning if you
have a temporary buffer that is to small, however if you receive on the
stack then you can make him (almost) as large you wants.

> I certainly don't want to malloc 100KB for a TCP packet...

See above, you dont need to.

---
Rgds, Wilfried [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html
http://www.mestdagh.biz

Saturday, October 29, 2005, 20:25, Kei wrote:

> Hi!

> I think I'm going to accept the reality that... TCP packets are splitted
> into arbitrary sizes.. but!!!
> How do I know the maximum size possible? What is the maximum size that a
> packet can be? I certainly don't want to malloc 100KB for a TCP packet...

> Thanks!

> David

> Wilfried Mestdagh wrote:

>>Hello David,
>>
>>  
>>
>>>Hi! I'm new to ICS!
>>>    
>>>
>>
>>Welcome to the group :)
>>
>>  
>>
>>>A->>B: msg hello
>>>B->>A: msg yo! how's it going?
>>>    
>>>
>>
>>Yes that's the way to go. Design a user made proto for what you intend
>>to do.
>>
>>  
>>
>>>If A is larger than the default buffer size (256 chars) then the A
>>>(sender) will warn B in advance
>>>    
>>>
>>
>>You can do that, but is not nececary. Also you will maybe have a very
>>mutch allocation / deallocation of memory and you can eventually end up
>>with fragmented memory where you have not a nice large block in it at
>>the moment you need it. But it can work, just think over carefully. A
>>better idea is often to make a receive buffer that grows automatically
>>if (and only if) needed, and then just reuse that buffer over and over
>>again. Then you have some (re)allocation in begin but then stable.
>>
>>  
>>
>>>TWSocket will automatically split it into packets,
>>>    
>>>
>>
>>Winsock will split in packets as large as the MTU (around 1500 bytes).
>>Eventually data can (and will if high speed) arrive as 1 large packet
>>but not necacarely.
>>
>>  
>>
>>>I really want the sender side to send the 1MB file all at once, since I
>>>do the FileWrite() right after Receive()....
>>>    
>>>
>>
>>No you cannot. Winsock does not respect packet boundaries, but (see
>>prior paragraph) there are no megabytes TCP packets.
>>
>>You have to receive all data chuncks into a buffer, and when you
>>received them all then you save to file (or save every packet direct to
>>disk). There is no problem to know the moment of close the file because
>>you know the length of the data from your protocol.
>>
>>---
>>Rgds, Wilfried [TeamICS]
>>http://www.overbyte.be/eng/overbyte/teamics.html
>>http://www.mestdagh.biz
>>
>>Saturday, October 29, 2005, 11:01, Kei wrote:
>>
>>  
>>
>>>Hi! I'm new to ICS!
>>>    
>>>
>>
>>  
>>
>>>I am designing a simple protocol that will be mainly used locally (as a
>>>database server backend)..so I'm guessing I could send up to 2GB of
>>>stuff without hassle (BLOBs, for example). Right now I'm just
>>>experimenting with the facility for two parties to effectively "talk" to
>>>each other, even with long long messages, and with binary data transfer.
>>>For example, for sending a message, the command is "msg [text]"
>>>    
>>>
>>
>>A->>B: msg hello
>>B->>A: msg yo! how's it going?
>>
>>  
>>
>>>If A is larger than the default buffer size (256 chars) then the A
>>>(sender) will warn B in advance, like this: "hey! I'm gonna send you
>>>10000 bytes of text"
>>>    
>>>
>>
>>A->>B: longmsg 10000
>>B->>A: ready msg
>>A->>B: msg blahblahblah...........blah!
>>
>>  
>>
>>>In this case, B will be notified of the text size, then when
>>>OnClientDataAvailable() event comes, it will malloc a bigger buffer,
>>>then Receive(CustomSized_Buffer, SizeHeToldMe). Similarly Im considering
>>>the same mechanism to send binary data. But if the file is slightly
>>>    
>>>
>>larger (>>10KB) then TWSocket will automatically split it into packets,
>>  
>>
>>>which I don't want it to do:
>>>    
>>>
>>
>>A->>B: upload 1048576 picture.jpg
>>B->>A: ready upload
>>A->>B: 01001010101010.. (10720 bytes)
>>A->>B: 11111010101012.. (10720 bytes)
>>  
>>
>>>:
>>>:
>>>    
>>>
>>A->>B: 01001010101010.. (4023 bytes)
>>
>>  
>>
>>>I really want the sender side to send the 1MB file all at once, since I
>>>do the FileWrite() right after Receive()....
>>>    
>>>
>>
>>  
>>
>>>Could anybody please help me on this issue?
>>>    
>>>
>>
>>  
>>
>>>Thanks!
>>>    
>>>
>>
>>  
>>
>>>David
>>>    
>>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>  
>>


-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to