# Setup a listening port on server
# This session will automatically terminates after a number of test counts

function initTestEpheralPort{
  param(
    $port=59848,
    $testCount=3
  )
  $cmdlet="(new-object Net.Sockets.TcpClient).Connect('$env:computername', $port)"
  write-host "$env:computername is now listening on port $port"
  write-host "Please run this function at the client side:`r`n$cmdlet"
  $listener=[System.Net.Sockets.TcpListener]$port;
  $listener.Start();
  while($testCount) 
  {    
      $clientAccepted=$listener.AcceptTcpClient();
      if($clientAccepted){
          write-host "$((netstat -ano -p tcp|select-string "$port"|out-string))"
          $testCount--;
          Write-Host "Connection test $testCount remains!";   
      }
      $clientAccepted.Close();
      if(!$testCount){
          # Stop listening on the server
          $listener.Stop();
          write-host "Tests have completed."  
      }
  }
}

initTestEpheralPort 59848
# Test reachability from a client machine
$server='nameOrIpHere'
$port=59848
(new-object Net.Sockets.TcpClient).Connect($server, $port)

Sample Output:

[SERVER1]: PS C:\Users\kdoan\Documents> initTestEpheralPort 59848
SERVER1 is now listening on port 59848
Please run this function at the client side:
(new-object Net.Sockets.TcpClient).Connect('SERVER1', 59848)

  TCP    0.0.0.0:59848          0.0.0.0:0              LISTENING       45568
  TCP    x.x.x.x:59848    y.y.y.y:50997     ESTABLISHED     45568



Connection test 2 remains!

  TCP    0.0.0.0:59848          0.0.0.0:0              LISTENING       45568
  TCP    x.x.x.x:59848    y.y.y.y:50997     FIN_WAIT_2      45568
  TCP    x.x.x.x:59848    y.y.y.y:51021     ESTABLISHED     45568



Connection test 1 remains!

  TCP    0.0.0.0:59848          0.0.0.0:0              LISTENING       45568
  TCP    x.x.x.x:59848    y.y.y.y:50997     FIN_WAIT_2      45568
  TCP    x.x.x.x:59848    y.y.y.y:51021     FIN_WAIT_2      45568
  TCP    x.x.x.x:59848    y.y.y.y:51040     ESTABLISHED     45568