我现在理解C#中的客户端 - 服务器连接:
除此之外,还存在一个“Socket”类,它可以用作Client和Server,但最后两个变量都是同一个东西?!
我理解TCPClient。它有一个getStream()方法,它返回一个NetWorkStream,它有从/向流读取和写入的方法。
我的问题是服务器端的TCPListener。 TCPListener没有getStream()方法,也没有读/写方法。我如何从TCPListener读取/写入流?
答案 0 :(得分:2)
TCP支持双向流。建立连接后,客户端和服务器端之间没有太大区别。
您可以使用TcpListener.AcceptTcpClient
建立连接,并为服务器端提供其TcpClient
实例。
您提到在问题标题中发送消息。需要记住的一件重要事情是,如果你使用TCP
工作在这个低级别,则没有固有的“消息”层 - 一端Send
的调用不在另一端与Receive
的来电匹配1-1。如果你想要消息传递,你必须自己在这些原语之上构建,或者切换到更高级别的网络库(例如WCF),它自动隐藏这个级别的细节。
基本上,TcpListener
类的行为符合“我打算让人们联系到我”的行为 - 并且调用Accept*
类似的方法就是说“如果有人要求的话与我联系,让我们现在创建这个连接并开始说“
答案 1 :(得分:0)
TcpListener允许您使用例如接受传入连接。 AcceptTcpClient
方法。这将返回一个TcpClient
实例,您可以将其用于与客户端的双向通信。
TCP是围绕连接构建的协议,因此,如果不首先建立连接,则无法真正发送或接收数据 - 这同样适用于客户端和服务器。
答案 2 :(得分:0)
您可以使用TcpClient的流从客户端接收数据或向客户端发送数据
TcpListener仅侦听请求,无法与请求进行交互。