基于TcpClient、TcpListener的客户/服务器程序,通过NetworkStream发送接收消息,为什么两端都能读写NetworkStream?

ooolinux 2018-03-07 11:30:02
一对基于TcpClient、TcpListener的客户/服务器程序,通过NetworkStream发送接收消息,为什么C、S两端都能读写NetworkStream?
是不是NetworkStream内部封装了两个缓冲区,为什么两端读写不会冲突?
...全文
589 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
两个 NetworkStream 不是同一个对象,没有什么冲突。
ooolinux 2018-06-18
  • 打赏
  • 举报
回复
ooolinux 2018-06-18
  • 打赏
  • 举报
回复
引用 13 楼 sp1234 的回复:
两个 NetworkStream 不是同一个对象,没有什么冲突。
如果是各自的NetworkStream,为什么一端写入,另一端可以读取呢?
ooolinux 2018-05-15
  • 打赏
  • 举报
回复
ooolinux 2018-03-09
  • 打赏
  • 举报
回复
@以专业开发人员为伍 按照6楼那样的代码,客户端和服务端同时读写NetworkStream,会不会冲突呢?
sdfgrtyu 2018-03-08
  • 打赏
  • 举报
回复
会冲突吧,两端都能读写才是正常的啊
  • 打赏
  • 举报
回复
引用 4 楼 u010165006 的回复:
@sdfgrtyu @拜一刀 ok @xuzuning 如果是各自的NetworkStream,为什么一端写入,另一端可以读取呢?
Stream 是封装的一个更加容易理解的界面概念。难道非得是什么 Socket 才能理解,而改为更加直观的 Stream 概念就不能理解?
  • 打赏
  • 举报
回复
一个进程发送的时候叫做 Stram,然后另外一个进程接收时叫做 Stream,这没有任何问题。就好像发送端的那个甚至也可以使用 WbSocket 或者 HttpRequest,而接收端仍然是 Stream,也是一样的。对于任何一个进程,它使用封装好的一个高级点的机制来操作网络通讯,他不用管对方用什么编程语言、什么名词儿。编程不是为了抠任何语言名词儿,而是看底层通讯协议能不能打通、能(不同语言不同平台)通讯即可。
ooolinux 2018-03-08
  • 打赏
  • 举报
回复
@xuzuning 是这样的,服务端: TcpClient client=tcpListener1.AcceptTcpClient(); 服务端和客户端: NetworkStream networkStream=client.GetStream();
xuzuning 2018-03-08
  • 打赏
  • 举报
回复
new NetworkStream(Socket) 你不是这样实例化的吗? 是 Socket 完成了两端的通讯
ooolinux 2018-03-08
  • 打赏
  • 举报
回复
@sdfgrtyu @拜一刀 ok @xuzuning 如果是各自的NetworkStream,为什么一端写入,另一端可以读取呢?
拜一刀 2018-03-08
  • 打赏
  • 举报
回复
为什么不能读写?建立连接以后可以双向通讯啊?
xuzuning 2018-03-08
  • 打赏
  • 举报
回复
各自读写自己的 NetworkStream,为什么会冲突?

110,535

社区成员

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

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

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