首页 > 解决方案 > TcpListener.AcceptSocket 什么时候应该优先于 TcpListener.AcceptTcpClient?

问题描述

TLDR;

TcpListener.AcceptSocket(Async)和 之间的功能和预期用途有什么区别TcpListener.AcceptTcpClient(Async)?具体来说,是不是NetworkStream特别要注意?

完整的细节和背景

我正在尝试掌握 .NET 套接字功能,以便编写一个服务器,该服务器维护持久的 TCP-IP 连接,以便通过预定义的协议与多个客户端进行双向通信。

最初,Google 将我带到了MS 的 Asynchronous Socket Example,该示例在有关该主题的 SO 问题中得到了广泛关注。

深入研究问题和答案,我看到人们推荐使用TcpClient/ TcpListenerover Socket

现在TcpListener有(阻塞和异步版本的)两种方法:AcceptSocketAcceptTcpClient. MS 的文档简要地表明后者更简单,前者提供了更多控制权,但没有解释原因或方式。我可以从C# 中的AcceptTcpClient vs AcceptSocketTCPClient vs Socket 中看到,后者提供了对NetworkStreamvia的访问权,TcpClient而前者公开了Send/Receive方法,Socket但这并不能真正解释为什么首选方法。

那么有什么区别,应该如何选择使用哪一个呢?是否有各自设计的用例?为什么两者都存在?

标签: .nettcptcplistener

解决方案


推荐阅读