为什么流上的“Close”调用在C#和Java中表现不同?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么流上的“Close”调用在C#和Java中表现不同?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含961字,纯文字阅读大概需要2分钟。
内容图文
![为什么流上的“Close”调用在C#和Java中表现不同?](/upload/InfoBanner/zyjiaocheng/783/1da93ebe1bb04de99757bbd0efa45b7a.jpg)
考虑下面的场景,一个servlet是用Java编写的,一旦你连接到servlet,它就会开始写入OutputStream,比方说1000万字节,一次1个字节.
你有一个客户端程序,它读取servlet的响应流并读取100字节并调用close.现在,如果您的客户端程序是Java,则流立即关闭,服务器停止发送内容,但如果客户端程序在C#中,则关闭调用需要很长时间才能完成,因为它显然等待服务器完成所有的写入1000万字节.
所以,我有两个问题,
>为什么C#表现不同?
>我该怎么做才能确保C#流上的Close调用立即关闭流并且不允许服务器继续发送数据?
任何指针将不胜感激:-)
解决方法:
我在这里假设某种插座.我怀疑Java实现只是关闭客户端套接字,可能导致服务器上的错误,而C#版本对服务器稍微友好并等待它确认关闭请求.由于服务器忙于触发数据,因此在完成发送之前,它不会 – 或者至少不会处理 – 关闭请求.
可以这样想:前门的某个人试图向你推销一些东西而不会被打断.你可以将门砰地一声关上,然后立即关闭它们,或者你可以等到他们说完话再让他们离开.
要解决它,也许您可??以创建一个打开流的工作线程,等待100个字节,然后关闭.与此同时,当线程最终关闭时,您的程序可以执行任何需要执行的操作.
内容总结
以上是互联网集市为您收集整理的为什么流上的“Close”调用在C#和Java中表现不同?全部内容,希望文章能够帮你解决为什么流上的“Close”调用在C#和Java中表现不同?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。