首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >写作和同花顺写作有什么区别?

写作和同花顺写作有什么区别?
EN

Stack Overflow用户
提问于 2014-10-17 12:53:52
回答 3查看 6.3K关注 0票数 4

最近我在试验网络技术。我遇到了以下问题:

ctx.channel().write(new TextWebSocketFrame("hello"))没有在客户端返回hello,但ctx.channel().writeAndFlush(new TextWebSocketFrame("hello"))返回了。

两者有什么区别?ctxChannelHandlerContext

EN

回答 3

Stack Overflow用户

发布于 2014-10-17 13:02:14

根据医生

http://netty.io/4.0/api/io/netty/channel/Channel.html

代码语言:javascript
运行
复制
  channel.writeAndFlush(msg); 

的快捷方式。

代码语言:javascript
运行
复制
  channel.write(msg);
  channel.flush();

flush()会刷新(写入)所有挂起的缓冲区。

票数 4
EN

Stack Overflow用户

发布于 2014-10-17 13:05:22

我认为它的工作方式是,如果您使用write,并且您发送的数据比缓冲区所能容纳的数据还多,那么当缓冲区已满时,它将自动刷新,以便为更多的数据提供缓冲空间。最后,当没有更多的数据将其他数据推送到缓冲区中时,您必须调用flush()来刷新缓冲区中剩余的内容。在您的示例中,您要发送的内容并不会释放缓冲区大小,因此它位于缓冲区中,没有任何东西推动缓冲区通过,这就是为什么您必须在写完之后调用刷新()来推送缓冲区中剩余的内容。writeAndFlush方法为您自动完成此操作,我认为,当它到达末尾时,它会自动刷新缓冲区。

票数 1
EN

Stack Overflow用户

发布于 2014-10-17 22:30:19

显然是在Netty write()缓冲器和flush()刷新中。事实上,与BufferedOutputStream完全一样。

因此,问题就出现了:什么时候去flush()?答案是,在发送请求或响应结束时,除非您即将关闭通道。例如,在客户端中,需要调用所有的请求卡,然后刷新,然后读取响应。在服务器中,发送所有响应部分,然后刷新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26425486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档