C# 通过套接字直接使用TcpClient有什么好处?

C# 通过套接字直接使用TcpClient有什么好处?,c#,sockets,tcpclient,C#,Sockets,Tcpclient,我知道TcpClient是socket类的包装器,如果使用TcpClient,我可以访问底层socket,但是包装器到底做什么呢 使用TCPClient时,我是否需要像使用套接字一样继续调用Receive(),或者包装器是否确保显示所有数据 最后,我可以在服务器和客户机上使用TcpClient来包装套接字吗(在使用TcpListener接受服务器上的原始连接之后) 包装器到底是做什么的 让我用一个例子来解释这一点。您在C#文件中有一个方法。ReadAllLines。它为您读取文件中的所有行。现在

我知道TcpClient是socket类的包装器,如果使用TcpClient,我可以访问底层socket,但是包装器到底做什么呢

使用TCPClient时,我是否需要像使用套接字一样继续调用Receive(),或者包装器是否确保显示所有数据

最后,我可以在服务器和客户机上使用TcpClient来包装套接字吗(在使用TcpListener接受服务器上的原始连接之后)

包装器到底是做什么的

让我用一个例子来解释这一点。您在C#
文件中有一个方法。ReadAllLines
。它为您读取文件中的所有行。现在,您还可以通过
FileStream
类或任何其他读取文件的类来实现相同的结果。。但是包装器,即
文件.ReadAllLines
,允许您用更少的代码行实现相同的功能。包装器总是通过抽象出低级细节来提高生产率

使用TCPClient时,我是否需要像以前一样继续调用Receive() 使用套接字还是包装器确保显示所有我的数据

TCPClient
没有类似于
Socket
Receive
方法,但想法是一样的。您必须使用诸如
GetStream
之类的方法来读取它不会自动为您显示的数据

我可以在服务器和客户端上使用TcpClient来包装 插座


是的,您可以在客户端和服务器端安全地使用它。那么,我说的对吗,在TcpClient上使用myTcpClient.GetStream().BeginRead()可以执行相当于执行BeginReceive()、后跟EndReceive()、存储字节并再次调用BeginReceive(),直到在套接字上接收到消息为止?在收到指定数量的字节之前,BeginRead()不会调用EndRead()回调吗?(无需不断调用BeginRead()/BeginReceive(),直到收到所有预期字节)我更喜欢使用
NetworkStream
类的
Read
Write
方法,而不是
BeginRead
EndRead
,因为您不必显式调用
BeginRead
EndRead
,包装器会帮您完成。在网上看到一些像这样的例子,谢谢你为我澄清。