I used something like this:
bool connectedLocal = true;
using (var socketTemp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
socketTemp.Connect(ip, port);
while (Running && connectedLocal)
{
Thread.CurrentThread.Join(100);
connectedLocal = !(socketTemp.Poll(0, SelectMode.SelectRead) && socketTemp.Available == 0);
}
socketTemp.Close();
}