什么时候应该比TcpListener.AcceptTcpClient首选TcpListener.AcceptSocket?

时间:2019-10-17 10:57:19

标签: .net tcp tcplistener

TLDR;

TcpListener.AcceptSocket(Async)TcpListener.AcceptTcpClient(Async)在功能和预期用途上有什么区别?具体来说,NetworkStream是否特别值得注意?

详细信息和背景

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

最初,Google引导我进入MS' Asynchronous Socket Example,在有关该主题的SO问题中有很多特色。

深入研究问题和答案,我发现人们建议在TcpClient上使用TcpListener / Socket

现在TcpListener有两种方法(阻塞和异步版本):AcceptSocket  和AcceptTcpClient。 MS的文档简要说明了后者更简单,而前者提供了更多控制权,但没有解释原因或方式。我从AcceptTcpClient vs AcceptSocketTCPClient vs Socket in C#中可以看到,后者通过NetworkStream可以访问TcpClient,而前者则在{上公开了Send / Receive方法{1}},但这并不能真正解释为什么偏爱一个人。

那么有什么区别?应该如何选择使用?每个案例都有针对的用例吗?为什么两者都存在?

0 个答案:

没有答案