从服务器(tcplistener)向客户端发送消息(tcpclient)

时间:2014-02-17 14:59:24

标签: c# tcpclient tcplistener

我现在理解C#中的客户端 - 服务器连接:

  • TCPListener =服务器
  • TCPClient =客户端

除此之外,还存在一个“Socket”类,它可以用作Client和Server,但最后两个变量都是同一个东西?!

我理解TCPClient。它有一个getStream()方法,它返回一个NetWorkStream,它有从/向流读取和写入的方法。

我的问题是服务器端的TCPListener。 TCPListener没有getStream()方法,也没有读/写方法。我如何从TCPListener读取/写入流?

3 个答案:

答案 0 :(得分:2)

TCP支持双向流。建立连接后,客户端和服务器端之间没有太大区别。

您可以使用TcpListener.AcceptTcpClient建立连接,并为服务器端提供其TcpClient实例。

您提到在问题标题中发送消息。需要记住的一件重要事情是,如果你使用TCP工作在这个低级别,则没有固有的“消息”层 - 一端Send的调用在另一端与Receive的来电匹配1-1。如果你想要消息传递,你必须自己在这些原语之上构建,或者切换到更高级别的网络库(例如WCF),它自动隐藏这个级别的细节。


基本上,TcpListener类的行为符合“我打算让人们联系到我”的行为 - 并且调用Accept*类似的方法就是说“如果有人要求的话与我联系,让我们现在创建这个连接并开始说“

答案 1 :(得分:0)

TcpListener允许您使用例如接受传入连接。 AcceptTcpClient方法。这将返回一个TcpClient实例,您可以将其用于与客户端的双向通信。

TCP是围绕连接构建的协议,因此,如果不首先建立连接,则无法真正发送或接收数据 - 这同样适用于客户端和服务器。

答案 2 :(得分:0)

您可以使用TcpClient的流从客户端接收数据或向客户端发送数据
TcpListener仅侦听请求,无法与请求进行交互。