user4883: I'm trying to send a large packet to an Arduino with an ethernet shield on it. I'm using the built-in RX buffer of the W5100 controller to store the data, but I need more memory (at least 16K of buffer space, the W5100 only has 8K of RX buffer space). I have control over the server side of things as I'm writing the server process myself, so I can take solutions on that side.
Is there some hack I can use in the TCP protocol to have the packet broken up?
Edit: I'm using the SFML 2.1 network API on the server side.

user10794: All you need to do is analyse the packet on-the-fly using a state machine.
http://www.gammon.com.au/statemachine
You certainly don't need to hold the entire packet at once, however you do need room for the information the packet contains.
Say, for example, that the packet, although wordy, contains 4 x 32-bit numbers of interest. All you need memory for is those 4 numbers, plus a minor extra amount for the current data you are processing (eg. the current state, and the current number being assembled).
Conceptually it is like streaming a movie to your PC. The PC doesn't need to hold the whole movie, it just needs to hold the current frame, and a few seconds in advance, just to keep things running smoothly.

4883: <p>I'm trying to send a large packet to an Arduino with an ethernet shield on it. I'm using the built-in RX buffer of the W5100 controller to store the data, but I need more memory (at least 16K of buffer space, the W5100 only has 8K of RX buffer space). I have control over the server side of things as I'm writing the server process myself, so I can take solutions on that side.</p>

<p>Is there some hack I can use in the TCP protocol to have the packet broken up?</p>

<p><strong>Edit:</strong> I'm using the SFML 2.1 network API on the server side.</p>
 10794: <p>All you need to do is analyse the packet on-the-fly using a state machine.</p>

<p><a href="http://www.gammon.com.au/statemachine" rel="nofollow">http://www.gammon.com.au/statemachine</a></p>

<p>You certainly don't need to hold the entire packet at once, however you <strong>do</strong> need room for the information the packet contains.</p>

<p>Say, for example, that the packet, although wordy, contains 4 x 32-bit numbers of interest. All you need memory for is those 4 numbers, plus a minor extra amount for the current data you are processing (eg. the current state, and the current number being assembled).</p>

<p>Conceptually it is like streaming a movie to your PC. The PC doesn't need to hold the whole movie, it just needs to hold the current frame, and a few seconds in advance, just to keep things running smoothly.</p>
