C#中的TCPClient与Socket

48 .net c# sockets network-programming

我没有看到太多的用处TCPClient,但有很多Socket?它们之间的主要区别是什么?您何时使用它们?

我知道.NET Socket是在WINSOCK之上编写的,并且TCPClientSocket类的包装器.因此TCPClient,链条上行,可能效率低下.如果我错了,请纠正我.

sip*_*wiz 37

使用TcpClient和TcpListener只意味着少了几行代码.正如你所说它只是Socket类的包装器所以它们之间没有性能差异,它纯粹是一种风格选择.

  • 这里的说明似乎与此相矛盾.http://msdn.microsoft.com/en-us/library/system.net.sockets.socket%28v=vs.110%29.aspx"如果您正在编写一个相对简单的应用程序而且_do不需要最高性能_,请考虑使用TcpClient" (7认同)
  • 没有矛盾.关于更高级别抽象的一般假设是它在底层功能方面的灵活性较低.因此,如果你需要做一些不符合"TcpClient"模型的事情,你最终可能会扭曲和弯曲它的API,并在此过程中失去可读性和性能.如果你将它用于它的设计目的,那么没有任何内在的理由相信它的表现不如更明确的API,但你会获得可读性. (3认同)
  • "风格"在这里是"常识"的一个大词.如果你可以使用预制件,一定要这样做:) (2认同)

Joh*_*sch 10

此外,您可以直接从TCPClient对象访问套接字,它位于属性下Client- 因此没有性能差异.