PowerShell收发UDP消息包

      在上篇文章中,在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字符的形式传送的,但是实际情况中通常是十六进制数据形式,在后续的文章中我们将会对本文的实例进行改进以便适应实际工作中的需要。

 

作者: 付海军
出处:http://fuhj02.cnblogs.com/
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接且保证内容完整!否则必究法律责任!
个人网站: http://txj.shell.tor.hu/

转载于:https://www.cnblogs.com/fuhj02/archive/2012/10/16/2726783.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值