我想知道如何在用 C 进行套接字编程时刷新套接字流。我尝试了所有选项设置TCP_NODELAY
使用以下代码-
setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
注:所有flag
and sockfd
已正确声明。
我之前都用过这个功能send(
) 之后send()
但这没有任何区别。
也有人建议使用shutdown()
每个之后send()
但这仅适用于一种情况。当我用它再次发送一些文本时,它不起作用 - 实际上连接在我使用后被关闭shutdown()
.
shutdown(sockfd, SHUT_WR);
有人可以在这方面提供帮助吗?
我想补充一点——服务器是 Java 套接字,客户端是 C 套接字。 C套接字实现JVMTI接口并将信息发送到Java套接字。
在 Google 上做了一些研究,似乎没有办法显式刷新套接字流。您可以设置 TCP_NODELAY,然后它将关闭 TCP内格尔算法。这应该确保数据立即发送,而不是等到缓冲区已满才发送。
当你设置TCP_NODELAY时,你是否使用过wireshark或其他东西来查看幕后发生了什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)