我在Solaris上运行的应用程序需要及时将tcp包发送到客户端,但是有时包会发送延迟。 我知道可以使用TCP_NODELAY创build套接字来解决问题,但代码不能更改。 有人可以告诉我在Solaris(任何版本)中,在哪里设置TCP_NODELAY为ON。 Solaris是否支持此参数? 我search了手册,但没有看到任何有用的信息。
Solaris支持TCP_NODELAY作为一个套接字选项,您可以在代码中设置 – 没有全局设置强制它的所有连接。 我能想到的最好的方法是写一个小的LD_PRELOAD模块,它插在socket()或connect()上以调用所需的getsockopt()。
你不能修改代码而不修改它。 你不会find一个真正的解决scheme,因为问题出在代码中,你不愿意改变代码。 将出站数据交给TCP堆栈时必须遵循的规则,如果代码不遵循这些规则,则会有200毫秒的延迟。 这只是TCP工作的方式 – 并不能保证及时传输。