gpt4 book ai didi

Android:OutputStreamWriter 刷新后未发送数据(套接字)

转载 作者:行者123 更新时间:2023-11-29 14:05:30 27 4
gpt4 key购买 nike

OutputStreamWriter out = new OutputStreamWriter(sock.getOutputStream());

out.write(data);
out.flush();

socks ——套接字;数据 - 字符缓冲区;

因此,如果我不关闭“out”或“sock”,则不会有数据发送到服务器。

OutputStreamWriter out = new OutputStreamWriter(sock.getOutputStream());

out.write(data);
out.close();

很好。但是为什么?

最佳答案

flush() 仅将 Java/Android 的应用程序级缓冲区刷新到 TCP 堆栈。一旦到达那里,它可能会被操作系统的 TCP 实现进一步延迟,它试图有效地使用传输的数据包并等待更多数据。 (如果您需要更多详细信息,请搜索“Nagle 算法”。)

无法在每次写入套接字时刷新 TCP 缓冲区,但可以通过设置 TCP_NODELAY 将套接字配置为在可能的情况下立即发送缓冲区中的所有数据。

参见 Java ObjectOutputStream on Socket not flush()ing有关该主题的更多信息。

关于Android:OutputStreamWriter 刷新后未发送数据(套接字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297173/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com