Hello, I have a little client-server application using tcp sockets. On both sides I use a buffer size of 4096 and I run all my tests with the client and server on the same machine, using address 127.0.0.1. Everything is going well except that now I suddenly need to send much larger messages. A message could now easily be 12MB in size. Now, what happens is that the transmission is incomplete : on the receiving end, I only get a chunk of the message instead of the whole thing.
I thought about simply increasing the buffer sizes on both ends to something larger than my maximum message size, but I'm not sure that's a reliable method, even if it works, and I'm not sure it'll work (if it's supported by TCP, if I won't run out of memory, etc.).
I also thought about splitting the message and actually my sending code automatically does that already, it will keep sending until all the data has been sent. However, on the receiving end, how do I know where a message ends, do I need to implement a protocol for that? I thought TCP already took care of that.
It is only available on Echo shows and the U.S. at the moment, so a million is pretty good I suppose. I hope when it does come to us all it can be disabled if not wanted, without having to get rid of Amazon Prime.
Uber wants to bring them to London, not that I live in London, but even if I did, I would not use them. I prefer having a human driving the car, not rely on some computer.
There is nobody to challenge the status quo. Foldables have not taken off as expected. People are holding onto their existing phones for a lot longer. There is movement happening in the handheld console space, but those are not phones. Both Apple and Google are involved in legal fights. Yet they have to stick to releasing a new OS every year... It all adds up.
Recent Achievements
Food-Beverages-Nutrition earned a badge Week One Done
Question
Andre S. Veteran
Hello, I have a little client-server application using tcp sockets. On both sides I use a buffer size of 4096 and I run all my tests with the client and server on the same machine, using address 127.0.0.1. Everything is going well except that now I suddenly need to send much larger messages. A message could now easily be 12MB in size. Now, what happens is that the transmission is incomplete : on the receiving end, I only get a chunk of the message instead of the whole thing.
I thought about simply increasing the buffer sizes on both ends to something larger than my maximum message size, but I'm not sure that's a reliable method, even if it works, and I'm not sure it'll work (if it's supported by TCP, if I won't run out of memory, etc.).
I also thought about splitting the message and actually my sending code automatically does that already, it will keep sending until all the data has been sent. However, on the receiving end, how do I know where a message ends, do I need to implement a protocol for that? I thought TCP already took care of that.
Anyway I'm a bit lost there, thanks for any tips.
Link to comment
https://www.neowin.net/forum/topic/809920-sending-large-message-over-tcp/Share on other sites
9 answers to this question
Recommended Posts