C# 检测远端端口UDP监听状态

本文介绍了使用C#通过发送UDP报文检测远端端口的UDP监听状态的方法。当向指定端口发送UDP报文时,若端口未监听,将收到ICMP反馈;反之,无反馈则表明端口处于监听状态。文章提供了具体的实现流程及代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前项目需要检测远端状态,起初尝试通过检测远端端口来实现,后方发现项目不适用改用其它方便,这里发出了给有需要的人。
原理:发送UDP报文到指定端口,如果该端口没有绑定UDP监听会反馈ICMP,有绑定则无返回。
实现流程,打开ICMP监听,给远端的端口发送UDP报文,如果收到ICMP反馈,说明该端口没有UDP监听,未收到反馈说明该端口有UDP检测(不考虑网络异常等特殊情况)。
代码附上
string _localIP = “192.1.3.125”;//本地IP
string _serverIP = “192.1.3.221”;//远端IP

main()
{
        Thread thr = new Thread(IcmpListener);
        thr.Start();//启动icmp监听
        UdpCheck(5081); //发送udp包
}


private void UdpCheck( int port)
    {
        UdpClient udpclient = new UdpClient(11066);
        udpclient.Connect(IPAddress.Parse(_serverIP), port);
        udpclient.Send(new byte[2], 2);  //向指定端口发udp包

    }

    public void IcmpListener()
    {
        while(true)
        {
            Socket icmpListener = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
            icmpListener.Bind(new IPEndPoint(IPAddres
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值