C# TCP客户端与C中的套接字#

C# TCP客户端与C中的套接字#,c#,.net,sockets,network-programming,C#,.net,Sockets,Network Programming,我看不到TCPClient有多少用途,但是有很多Socket?它们之间的主要区别是什么?何时使用它们 我知道.NETSocket是写在WINSOCK之上的,而TCPClient是Socket类的包装器。因此,TCPClient处于链的上游,可能效率低下。如果我错了,请纠正我 使用TcpClient和TcpListener只意味着代码少了几行。正如您所说,它只是套接字类上的一个包装器,因此它们之间没有性能差异,这纯粹是一种样式选择 更新:自发布此答案后,.Net源代码已可用。它确实显示了它是类上的

我看不到
TCPClient
有多少用途,但是有很多
Socket
?它们之间的主要区别是什么?何时使用它们


我知道.NET
Socket
是写在WINSOCK之上的,而
TCPClient
Socket
类的包装器。因此,
TCPClient
处于链的上游,可能效率低下。如果我错了,请纠正我

使用TcpClient和TcpListener只意味着代码少了几行。正如您所说,它只是套接字类上的一个包装器,因此它们之间没有性能差异,这纯粹是一种样式选择

更新:自发布此答案后,.Net源代码已可用。它确实显示了它是类上的一个非常轻的包装器,而类本身是本机*上的包装器

  • 在窗户上。其他平台上的.Net标准/核心等将有所不同
此外,您可以直接从
TCPClient
对象访问套接字,它位于属性
客户端下,因此没有性能差异。

这里的“样式”是“常识”的一个大词。如果你可以使用预制件,那么一定要这样做:)这里的注释似乎与此相矛盾。“如果您正在编写一个相对简单的应用程序,不需要最大性能,考虑使用TCPclipse”,没有矛盾。关于更高抽象级别的一般假设是,它在底层功能方面的灵活性较低。因此,如果您需要做一些不符合TcpClient模型的事情,例如,
TcpClient
,那么最终可能会扭曲和弯曲它的API,并在过程中失去可读性和性能。如果您将它用于它的设计目的,那么没有内在的理由相信它的性能不如一个更显式的API,但是您将获得可读性。