We are no longer accepting contributions to Documentation. Please see our post on meta.
This draft deletes the entire topic.
Examples
-
Function Receive-TCPMessage { Param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [int] $Port ) Process { Try { # Set up endpoint and start listening $endpoint = new-object System.Net.IPEndPoint([ipaddress]::any,$port) $listener = new-object System.Net.Sockets.TcpListener $EndPoint $listener.start() # Wait for an incoming connection $data = $listener.AcceptTcpClient() # Stream setup $stream = $data.GetStream() $bytes = New-Object System.Byte[] 1024 # Read data from stream and write it to host while (($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){ $EncodedText = New-Object System.Text.ASCIIEncoding $data = $EncodedText.GetString($bytes,0, $i) Write-Output $data } # Close TCP connection and stop listening $stream.close() $listener.stop() } Catch { "Receive Message failed with: `n" + $Error[0] } } }
Start listening with the following and capture any message in the variable
$msg
:$msg = Receive-TCPMessage -Port 29800
-
Function Send-TCPMessage { Param ( [Parameter(Mandatory=$true, Position=0)] [ValidateNotNullOrEmpty()] [string] $EndPoint , [Parameter(Mandatory=$true, Position=1)] [int] $Port , [Parameter(Mandatory=$true, Position=2)] [string] $Message ) Process { # Setup connection $IP = [System.Net.Dns]::GetHostAddresses($EndPoint) $Address = [System.Net.IPAddress]::Parse($IP) $Socket = New-Object System.Net.Sockets.TCPClient($Address,$Port) # Setup stream wrtier $Stream = $Socket.GetStream() $Writer = New-Object System.IO.StreamWriter($Stream) # Write message to stream $Message | % { $Writer.WriteLine($_) $Writer.Flush() } # Close connection and stream $Stream.Close() $Socket.Close() } }
Send a message with:
Send-TCPMessage -Port 29800 -Endpoint 192.168.0.1 -message "My first TCP message !"
Note: TCP messages may be blocked by your software firewall or any external facing firewalls you are trying to go through. Ensure that the TCP port you set in the above command is open and that you are have setup the listener on the same port.
-
Please consider making a request to improve this example.
Still have a question about TCP Communication with PowerShell?
Ask Question
Sign up or log in
Save edit as a guest
Join Stack Overflow
Using Google
Using Facebook
Using Email and Password
We recognize you from another Stack Exchange Network site!
Join and Save Draftlang-bsh