Is there an equivalent to TCP_CORK in Winsock?

后端 未结 2 1745
挽巷
挽巷 2021-01-06 11:09

In many UNIX TCP implementations, a socket option TCP_CORK is provided which allows the caller to bypass Nagle\'s algorithm and explicitly specify when to send a physical pa

相关标签:
2条回答
  • 2021-01-06 11:54

    FWIW I successfully use TCP_NODELAY to get TCP_CORK-style behavior. I do it like this:

    1. unset the TCP_NODELAY flag on the socket
    2. Call send() zero or more times to add your outgoing data into the Nagle-queue
    3. set the TCP_NODELAY flag on the socket
    4. call send() with the number-of-bytes argument set to zero, to force an immediate send of the Nagle-queued data

    That works fine for me under Windows, MacOS/X, and Linux. (Note that under Linux the final zero-byte send() isn't necessary)

    0 讨论(0)
  • 2021-01-06 11:57

    There is no equivalent. The best you can do is gather your data pieces into your own buffer first, and then send the completed buffer to the socket when ready, and let Nagle handle the packets normally.

    0 讨论(0)
提交回复
热议问题