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 AcceptSocket和TCPClient vs Socket in C#中可以看到,后者通过NetworkStream
可以访问TcpClient
,而前者则在{上公开了Send
/ Receive
方法{1}},但这并不能真正解释为什么偏爱一个人。
那么有什么区别?应该如何选择使用?每个案例都有针对的用例吗?为什么两者都存在?