In .NET 1.1 and before, if you get the TcpClient, you didn't have access
to the underlying socket. Because of this, you would have to call the
AcceptSocket method to get a socket, and then get the endpoint from there.
In .NET 2.0, the TcpClient class exposes the Client property, which will
give you access to the underlying Socket.
Hope this helps.
- Nicholas Paldino [.NET/C# MVP]