PowerShell指令碼開發之收發UDP訊息包_PowerShell

來源:互聯網
上載者:User

在上篇文章中,在PSNet工具集中建立了Send-TCPMessage和Receive-TCPMessage兩個函數實現了通過PowerShell收發TCP訊息包的功能,有了TCP包的發送和接收,自然少不了UDP訊息包的發送和接收,本文將會介紹通過PowerShell發送和接收UDP訊息包的方法。

為了能跟之前的PSNet程式集匹配,繼續基於此程式集進行擴充,在$env:PSSpace\PSNet下建立UDPOp目錄,在其中建立Receive-UDPMessage.ps1和Send-UDPMessage.ps1兩個檔案,代碼稍後插入。

在$env:PSSpace\PSNet\PSNet.psm1中添加對上述兩個指令檔的引用,代碼如下:

複製代碼 代碼如下:

. $env:PSSpace/PSNet/TCPOp/Receive-UDPMessage.ps1
. $env:PSSpace/PSNet/TCPOp/Send-UDPMessage.ps1

需要注意的是這兩行代碼需要在PSNet.psm1中已經存在的Export-ModuleMember -Function *代碼之前,以便能保證被引入的指令檔中包含的函數均可以作為該程式集模組的成員註冊,以便能夠被PowerShell進程識別。

下面附上代碼:

複製代碼 代碼如下:

 =====檔案名稱:Receive-UDPMessage.ps1=====
Function Receive-UDPMessage
{
    param ( [ValidateNotNullOrEmpty()]
    [int] $Port )

    try
    {
        $EndPoint = New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Loopback,$Port)
        $UDPClient = New-Object System.Net.Sockets.UDPClient($Port)
        $ReceiveMessage = $UDPClient.Receive([System.Management.Automation.PSReference]$EndPoint)
        [System.Text.Encoding]::ASCII.GetString($ReceiveMessage)
    }
    catch{}
}

複製代碼 代碼如下:

        =====檔案名稱:Send-UDPMessage.ps1=====
Function Send-UDPMessage
{
    param ( [ValidateNotNullOrEmpty()]
    [string] $EndPoint,
    [int] $Port,
    [string] $Message )

    $IP = [System.Net.Dns]::GetHostAddresses($EndPoint)
    $Address = [System.Net.IPAddress]::Parse($IP)
    $EndPoints = New-Object System.Net.IPEndPoint($Address,$Port)
    $Socket = New-Object System.Net.Sockets.UDPClient
    $EncodedText = [Text.Encoding]::ASCII.GetBytes($Message)
    $SendMessage = $Socket.Send($EncodedText,$EncodedText.Length,$EndPoints)
    $Socket.Close()
}

啟動兩個PowerShell進程分別匯入PSNet模組:

複製代碼 代碼如下:

Import-Module $env:PSSpace\PSNet

首先運行Receive-UDPMessage對連接埠進行監聽:

複製代碼 代碼如下:

Receive-UDPMessage 8080

然後通過Receive-UDPMessage函數對上面指定的連接埠發送訊息:

複製代碼 代碼如下:

Send-UDPMessage 127.0.0.1 8080 "This is a UDP Message Send from PSNet!"

發送之後會在前面的視窗中顯示訊息內容。

本文中的執行個體中為了顯示發送效果,字串傳輸過程中是ASCII字元的形式傳送的,但是實際情況中通常是十六進位資料形式,在後續的文章中我們將會對本文的執行個體進行改進以便適應實際工作中的需要。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.