Is it possible to convert between Socket and TcpClient objects?

.net, c#, sockets, system.net, tcpclient

Solution

If you had a Socket instance and you wanted to wrap it in the higher-level TcpClient class, is that possible and how would you do it?

Socket socket = ...;
TcpClient client = new TcpClient();
client.Client = socket;

Conversely if you have an instance of TcpClient, is it possible to get the underlying Socket?

Get the underlying Socket using TcpClient.Client property.

Problem

Here's another C#/.NET question based merely on curiousity more than an immediate need ... If you had a `Socket` instance and you wanted to wrap it in the higher-level `TcpClient` class, is that possible and how would you do it? Conversely if you have an instance of `TcpClient`, is it possible to get the underlying `Socket`?

Original source