.net - TcpListener.AcceptSocket 什么时候应该优先于 TcpListener.AcceptTcpClient?
问题描述
TLDR;
TcpListener.AcceptSocket(Async)
和 之间的功能和预期用途有什么区别TcpListener.AcceptTcpClient(Async)
?具体来说,是不是NetworkStream
特别要注意?
完整的细节和背景
我正在尝试掌握 .NET 套接字功能,以便编写一个服务器,该服务器维护持久的 TCP-IP 连接,以便通过预定义的协议与多个客户端进行双向通信。
最初,Google 将我带到了MS 的 Asynchronous Socket Example,该示例在有关该主题的 SO 问题中得到了广泛关注。
深入研究问题和答案,我看到人们推荐使用TcpClient
/ TcpListener
over Socket
。
现在TcpListener
有(阻塞和异步版本的)两种方法:AcceptSocket
和AcceptTcpClient
. MS 的文档简要地表明后者更简单,前者提供了更多控制权,但没有解释原因或方式。我可以从C# 中的AcceptTcpClient vs AcceptSocket和TCPClient vs Socket 中看到,后者提供了对NetworkStream
via的访问权,TcpClient
而前者公开了Send
/Receive
方法,Socket
但这并不能真正解释为什么首选方法。
那么有什么区别,应该如何选择使用哪一个呢?是否有各自设计的用例?为什么两者都存在?
解决方案
推荐阅读
- angular - 使用 @angular/elements 为每个组件生成不同的 js 包
- html - 徽标 CSS 导航栏不断爆炸
- python - 安装 Tensorflow 时出现有关 Python 的错误
- excel - Power Query 忽略缺少的列
- python - 在 Python 中从 Azure Blob 下载 XLSX 文件
- flutter - Flutter 的 ReorderableListView 会拖出项目吗?
- java - 事件类随 Axon CQRS 变化
- javascript - Javascript:复制元素 html
- kotlin - 如何仅返回 Kotlin 中两个并发异步挂起函数中的第一个的结果?
- java - 如何使用 Spring Boot 调度程序获取价格差异