如何在Delphi中提高TCP数据包的优先级?

如何在Delphi中提高TCP数据包的优先级?,delphi,winapi,tcp,Delphi,Winapi,Tcp,我有一个服务器应用程序,它从客户机接收一些特殊的TCP数据包,并需要通过向客户机发送一个高级ACK(TCP ACK不能满足我的需要)尽快对其作出反应 但是,该服务器实际上是网络密集型的,有时数据包需要很长时间才能发送(例如,在本地网络中,当一个简单的服务器应用程序可以在不到1ms的时间内发送数据包时,需要200ms) 在Delphi中有没有一种方法可以用高优先级标签或类似的东西来标记这个数据包?或者使用Win32 API 提前谢谢 编辑 谢谢你迄今为止的所有答案。我会补充一些细节。我的产品有以下

我有一个服务器应用程序,它从客户机接收一些特殊的TCP数据包,并需要通过向客户机发送一个高级ACK(TCP ACK不能满足我的需要)尽快对其作出反应

但是,该服务器实际上是网络密集型的,有时数据包需要很长时间才能发送(例如,在本地网络中,当一个简单的服务器应用程序可以在不到1ms的时间内发送数据包时,需要200ms)

在Delphi中有没有一种方法可以用高优先级标签或类似的东西来标记这个数据包?或者使用Win32 API

提前谢谢

编辑

谢谢你迄今为止的所有答案。我会补充一些细节。我的产品有以下设置:有几个设备是建立在具有WIFI连接的车辆上的。当他们到达车库时,这些设备连接到我的服务器并开始传输数据


由于硬件限制,我实现了一个高级ACK,以使设备知道最后一个数据包成功到达(请不要对此争论-即使我得到了正确的TCP ACK,数据也可能被破坏)。但是,如果我使用与远程数据库通信的服务器软件来发出此ACK,我会得到很长的延迟(>200ms)。如果我使用专用软件执行此任务,我会得到很小的延迟(简而言之,向函数传递
MSG_OOB
标志将数据标记为“紧急”。在Windows Sockets实施细节的上下文中,可以获得有关OOB的详细讨论。

在我看来,实现这一点非常困难。涉及到很多设备和软件。首先,如果在两个不同的操作系统之间进行通信,则会有延迟。其次,软防火墙和硬防火墙、防病毒软件,一切都是安全的过滤/延迟您的包裹


您还可以尝试“黑客”系统(这涉及到如何打包/发送帧/段、流量控制、拥塞等方面的一些非常好的知识),或者通过使用类似或其他工具从代码中修改它。

您使用的是什么通信库?Delphi版本?@Mef,它确实如此。请参见我的答案。@user539484紧急与优先级不完全相同您希望发生什么?相隔多远(路由跳数)这是两台计算机吗?你的连接有多少网络带宽?你真的认为是紧急装运标志(TCP QOS)吗是否会有任何影响?我会向任何人挑战,以显示任何局域网或internet上由于TCP QOS而减少的延迟。Haole。如果您遇到200毫秒的延迟,我敦促您调查您的LAN和PC负载,并通过修复原因来解决问题。QOS对LAN或本地计算机没有影响。这是我的建议这是您在基础架构中必须注意的事情。您能做的最好的事情就是为这些高优先级消息保持单独的TCP/IP连接。也许您可以在客户端重复发送它们时使用UPD/IP;您不需要任何ACK,但由于其性质,可靠性较低。相关的高级阅读来自我的知识实际上,服务质量直接在设备(路由器等)上实现实际上,它并没有被开启。因为没有人信任开启这些比特的人。我敢打赌,互联网路由器99.99%的时候忽略了QOS比特。@WarrenP-我相信你是对的。如果可以协商一个好的QOS,就会有一个计费系统,我会得到服务的传单和垃圾邮件。我不会收到任何垃圾邮件高性能互联网(我指的是有保证的、可测量的高性能,而不是每个ISP所说的“高性能”),所以它不可能存在。@MartinJames,呵呵。我认为沃伦·P只是发现了一个熟悉的词,并毫不犹豫地分享了他对“比特”和赌注的诠释。你到底同意什么?而且,这有点像中世纪“哲学”-如果我看不到X,那么X肯定不存在:-)