What are the benefits of using TcpClient over a Socket directly?

13,010

what exactly does the wrapper do?

Let me explain this with an example. You have a method in C# File.ReadAllLines. It reads all lines in the file for you. Now you can also achieve same results via FileStream class or any other class which reads file .. BUT.. wrapper i.e. File.ReadAllLines, allows you to achieve the same with less lines of code. Wrappers always increase productivity by abstracting out the low level details

When using the TCPClient do i need to keep calling Receive() like I do with a socket or does the wrapper ensure all my data appears?

TCPClient don't have a Receive method like Socket but the idea is same. You will have to use methods like GetStream to read the data it won't automagically appear for you

Can I use the TcpClient on both the server and the client to wrap the socket

Yes, you can safely use it on both client and server side

Share:
13,010
Dermot
Author by

Dermot

Updated on July 09, 2022

Comments

  • Dermot
    Dermot almost 2 years

    I understand that a TcpClient is a wrapper around the socket class, and I can access the underlying socket if using the TcpClient, but what exactly does the wrapper do?

    When using the TCPClient do i need to keep calling Receive() like I do with a socket or does the wrapper ensure all my data appears?

    Lastly, can I use the TcpClient on both the server and the client to wrap the socket (after using TcpListener to accept the original connection on the server)

  • Dermot
    Dermot about 12 years
    Ah I see. So am I right in saying that equivalent of performing BeginReceive(), followed by EndReceive(), store bytes and recall BeginReceive() again until message received on a socket, can be performed by using myTcpClient.GetStream().BeginRead() on a TcpClient? Will BeginRead() not call the EndRead() callback until the specified number of bytes received has indeed been received? (removing the need to constantly call BeginRead()/BeginReceive() until all expected bytes have been received)
  • Haris Hasan
    Haris Hasan about 12 years
    I would prefer to use Read and Write methods of NetworkStream class instead of BeginRead and EndRead because you won't have to explicitly call BeginRead and EndRead the wrapper would do it for you. See some samples on internet like this one msdn.microsoft.com/en-us/library/…
  • Dermot
    Dermot about 12 years
    Thanks for clarifying that for me.