socket networkstream

printfabcd 2010-01-29 04:23:40
我有一点不太明百,就是networkstream这个类有什么用??,通过socket建立这个类后,好像还是要先将要发送的信息,转化成byte数组,这和直接用socket有区别吗?还有就是,如果要发送图片的话要怎么写呢?直接通过文件流读取到字节数组,然后调用send方法发送出去可以吗?,如何标识文件发送完成呢?请教大家一些O(∩_∩)O~
...全文
215 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
除了作为Stream从而正好可以用于我针对通用Stream的异步编程框架中,对于TcpListener的自定义类型设计来说,我还经常用到NetStream的DataAvailable属性来控制判断接收是否完成,这正好回答了你的问题。
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vrhero 的回复:]
根本不是一个层次的东西有什么好比较的?CLR还提供TcpClient、FtpClient等一堆Socket的封装,照你们这意思都有啥用?直接Socket编程就完了嘛...

NetworkStream类是为Socket提供Stream访问模式,从而有能力提供一个统一的访问模式...这个问题不能从纯技术角度去思考...在适当的场景中,以软件工程的角度去看这是为编程者提供了一个方便实用的接口...
[/Quote]

是的。可以说,至少现在,NetworkStream主要是为了完成TcpClient和TcpListenner,即更好地封装,从而更好地复用于针对Stream的各种框架中。
vrhero 2010-01-30
  • 打赏
  • 举报
回复
根本不是一个层次的东西有什么好比较的?CLR还提供TcpClient、FtpClient等一堆Socket的封装,照你们这意思都有啥用?直接Socket编程就完了嘛...

NetworkStream类是为Socket提供Stream访问模式,从而有能力提供一个统一的访问模式...这个问题不能从纯技术角度去思考...在适当的场景中,以软件工程的角度去看这是为编程者提供了一个方便实用的接口...
aierda 2010-01-30
  • 打赏
  • 举报
回复
其实功能是一样的,networkstream用read来接收数据,write来发送数据;而socket是用receive来接收数据,send来发送数据。在发送文件的时候,最好先把文件长度,文件名发过去,然后再进行文件的发送。
ubosm 2010-01-30
  • 打赏
  • 举报
回复
其实都是0101 没啥好纠结的 哪个好用 用哪个
大黄鸭在发光 2010-01-30
  • 打赏
  • 举报
回复
这两个用哪个都行,只不过networkstream不支持对网络数据流的随机访问,比如不支持length属性的访问。我觉得只有这一个区别。
printfabcd 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vrhero 的回复:]
根本不是一个层次的东西有什么好比较的?CLR还提供TcpClient、FtpClient等一堆Socket的封装,照你们这意思都有啥用?直接Socket编程就完了嘛...

NetworkStream类是为Socket提供Stream访问模式,从而有能力提供一个统一的访问模式...这个问题不能从纯技术角度去思考...在适当的场景中,以软件工程的角度去看这是为编程者提供了一个方便实用的接口...
[/Quote]
学习了O(∩_∩)O~
老Key 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sp1234 的回复:]
除了作为Stream从而正好可以用于我针对通用Stream的异步编程框架中,对于TcpListener的自定义类型设计来说,我还经常用到NetStream的DataAvailable属性来控制判断接收是否完成,这正好回答了你的问题。
[/Quote]恩恩。。。。
printfabcd 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangyue4 的回复:]
效果一样,载体都是byte[]数组,networkstream发送是write(),socket发送是send()。
图片就用socket就行,但编码推荐用base64编码成byte[].至于发送完成的判断你就先发个长度过去就行啊。
接收方受到数据达到长度就完
[/Quote]
那networkstream有什么用?,传图片,为什么不用networkstream
大黄鸭在发光 2010-01-29
  • 打赏
  • 举报
回复
效果一样,载体都是byte[]数组,networkstream发送是write(),socket发送是send()。
图片就用socket就行,但编码推荐用base64编码成byte[].至于发送完成的判断你就先发个长度过去就行啊。
接收方受到数据达到长度就完

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧