Replacing Telnet.exe (now removed from Vista)
Wednesday, 30 August 2006
Probably the most useful network tool on any operating system is Telnet. Not for connecting to Telnet servers, of course, as the Telnet protocol is about as insecure as they come. Instead, it’s useful for debugging connection problems with arbitrary ports and arbitrary protocols.
Debugging an HTTP problem? You can Telnet into port 80 to help you resolve it.
Debugging a mail retrieval issue? You can Telnet into port 110 to help you resolve it.
Debugging a mail sending issue? You can Telnet into port 25 to help you resolve it.
<etc>
Unfortunately, this workhorse was removed from Vista’s default installation. Here’s a simple PowerShell replacement script. It’s great for debugging, but useless (of course) for terminal emulation:
## Connect-Computer.ps1
## Interact with a service on a remote TCP port
param(
[string] $remoteHost = “localhost”,
[int] $port = 80
)
## Open the socket, and connect to the computer on the specified port
write-host “Connecting to $remoteHost on port $port”
$socket = new-object System.Net.Sockets.TcpClient($remoteHost, $port)
if($socket -eq $null) { return; }
write-host “Connected. Press ^D followed by [ENTER] to exit.`n”
$stream = $socket.GetStream()
$writer = new-object System.IO.StreamWriter($stream)
$buffer = new-object System.Byte[] 1024
$encoding = new-object System.Text.AsciiEncoding
while($true)
{
## Allow data to buffer for a bit
start-sleep -m 500
## Read all the data available from the stream, writing it to the
## screen when done.
while($stream.DataAvailable)
{
$read = $stream.Read($buffer, 0, 1024)
write-host -n ($encoding.GetString($buffer, 0, $read))
}
## Read the user’s command, quitting if they hit ^D
$command = read-host
if($command -eq ([char] 4)) { break; }
## Write their command to the remote host
$writer.WriteLine($command)
$writer.Flush()
}
## Close the streams
$writer.Close()
$stream.Close()


Subscribe to this blog.
No. 1 — September 2nd, 2006 at 5:20 pm
Vista has both a Telnet client and a Telnet server built-in. They’re just off by default.
You can find them in the "Turn Windows Features On or Off" dialog inside the Programs control panel.
No. 2 — September 9th, 2006 at 11:46 pm
Hi,
I wrote for myself a Web service to telnet very simply any server. As t proved to be very useful, I propose it to everyone on the web: http://browseas.com/telnet.php
No. 3 — September 10th, 2006 at 12:08 am
Nice job! It hung when I tried to use any interactive protocols, though :)
No. 4 — April 24th, 2008 at 1:46 pm
Well, AbsoluteTelnet is indeed a good one, but it’s not commandline-based and it’s not free.
You might wanna consider PuTTY instead, or just enable it again in Vista …
No. 5 — July 2nd, 2009 at 11:29 am
start – run – "start /w ocsetup TelnetClient"
voila! telnet installed, problem solved.
No. 6 — June 8th, 2011 at 11:02 am
[...] 8, 2011 by Brian Reiter Leave a Comment Lee Holmes has a cool script to reproduce telnet-like functionality via the TcpClient object in [...]