Blog post featured image

TCP Verbindungstest via Powershell

Es kommt hin und wieder vor, dass es Probleme mit der Verbidung zwischen Servern und Clients gibt. Beim Troubleshooting hilft es Komplexität zu vermindern und die Abhängigkeit von nicht kontrollierbaren Prozessen zu vermeiden. Um schnell und einfach eine TCP Verbindung auf einem bestimmten Port zu testen hilft das folgende Script. Beispielsweise um zu testen ob ein Port von einer Firewall geblockt wird.
Es öffnet einen bestimmten TCP Port, lauscht und wartet auf eine Verbindung. Sobald ein Client sich verbindet z.B. via Telnet gibt es eine kurze Nachricht zurück, beendet die Verbindung und stopt auf dem Port zu lauschen.

$bindaddress = [ipaddress]::any # Bind Address, in this case listens to all IPs on the system. You can specify a address that should be listened on like "127.0.0.1"
$port = "1234" # Port on which should be listened

$listener = New-Object System.Net.Sockets.TcpListener -ArgumentList $bindaddress,$port  # Create a listener with the defined parameters
$listener.Start(); # start it

$session = $Listener.AcceptTcpClient(); # accept a TCP session
$stream = $session.GetStream(); # connect to the data stream

$Data = [text.Encoding]::Ascii.GetBytes('Hey there, yes it works!')   # prepare message
$stream.Write($Data,0,$Data.length) # sent message

$session.Close(); # close the session
$listener.Stop(); # stop the listener

GitHub Link

Auf dem Server das Script starten. Auf dem Client telnet 127.0.0.1 1234 ausführen. Danach sollte eine kurze Nachricht angezeigt und die Verbindung beendet werden.

Back to top