我想知道在C语言中进行套接字编程时如何刷新套接字流.我尝试TCP_NODELAY使用以下代码设置所有选项 -
setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
Run Code Online (Sandbox Code Playgroud)
注意:所有flag和sockfd正确声明.
我之前send(和之后都使用过这个功能,send()但它没有任何区别.
也有人建议shutdown()在每次之后使用,send()但仅适用于一个实例.当我使用它再次发送一些文本时,它不起作用 - 实际上连接在我使用后关闭shutdown().
shutdown(sockfd, SHUT_WR);
Run Code Online (Sandbox Code Playgroud)
在这方面有人可以提供帮助吗?
我想补充一点 - 服务器是Java套接字,客户端是C套接字.C套接字实现JVMTI接口并将信息发送到Java套接字.
您可能想阅读The Ultimate SO_LINGER page,或者:why is my tcp not reliable,我认为这适用于您的情况。
send()多次调用 TCP 套接字并不罕见:) 我的意思是,这是正常用法。您可能在服务器端遇到问题,服务器期望一定数量的字节和块等待它。
据我所知,JVM TI 没有规定任何在线协议,因此您必须提出自己的协议。定义客户端发送和服务器期望的记录的结构,如果大小不同,则将数据长度放入其中。您还可以实现一些从服务器返回到客户端的应用程序级确认。
| 归档时间: |
|
| 查看次数: |
45016 次 |
| 最近记录: |