Solved QTcpSocket settings to disable ACK
I am using QTcpServer and QTcpSocket to create TCP server and send packages. Platform is Windows 7.
Here is the problem. My application is TCPIP Server, and I need to connect to Client which is also TCPIP but with ACK disabled.
In the other words, I need to send TCPIP messages, and somehow “disable” waiting for ACK (once when connection is established).
TCPIP client will not send ACK on message reception.
I know that using UDP would have more sense, but it is customer requirement.
I am using Qt 4.6.1. Is there any way how to “disable” sending/receiving ACK?
I didn’t find any way how to set Timeout periods and winds size in Qt?
Also, I was hoping that there is a way how to write message to socket and then “flush” data (and that would force QTcp to forget/reset waiting for ACK).
It is a pretty important to me, I would appreciate any help or suggestion.
Is there any way how to “disable” sending/receiving ACK?
I don't have the spec here, but I doubt this is possible with a default TCP stack (in the operating system! not in Qt)
Honestly, it doesn't make sense either, as missing ACK leads to retransmissions. It's just the base of TCP.
Can you tell us, why that would be needed?
Thanks for your comment.
I understand your confusion/comment....
My understandings is that they want to reduce traffic, but they don't want to switch to UDP.
I am not an expert, just average user.
Here is snap from draft spec.
@Svirac You should really clearify this with your customer.
It may be possible, he is speaking about an additional ACK on application base (i.e. Layer 5 to 7).
You can reduce traffic, but not completely, because on some layer you need to sync both sides. TCP does that for you, automatically. UDP does not, so you have to take care data arrives completely and unaltered on the other side.
Just to give you a feedback.
Aha you were correct, by mistake they leave some definitions form higher level layer, it is not related to TCPIP.
Thanks for all help, really appreciate it....
Kent-Dorfman last edited by
As others have mentioned, if it is an application layer protocol riding on TCP then you can do whatever you want with the application layer ACKs, but you CANNOT disable TCP ACK messages and expect the network stack to work. If they want the latter then all I have to say is "Bad engineer! No cookie!"