欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#?實現Ping遠程主機功能及代碼演示

 更新時間:2024年05月13日 08:59:47   作者:WeskyNet  
這篇文章主要介紹了C#?實現Ping遠程主機功能,本教程將演示1.0.2版本更新功能,以及實現的具體代碼演示,需要的朋友可以參考下

1、引用nuget包 Wesky.Net.OpenTools

OpenTools是一個用于提高開發(fā)效率的開源工具庫。該項目為個人開源項目,采用MIT開源協(xié)議,永不更改協(xié)議。開源項目地址:

Gitee:https://gitee.com/dreamer_j/open-tools.git
Github:https://github.com/LittleLittleRobot/OpenTools.git
工具更新說明:
1.0.1 提供AES加密解密功能
1.0.2 提供本地Ping遠程主機功能,包括支持IP地址、域名

本教程將演示1.0.2版本更新功能,以及實現的具體代碼演示。

咱們先看一下正常的Ping的效果:

引用nuget包以后,只需要直接調用:

PingHelper.PingHost方法即可,第一個參數是IP地址或域名,第二個是超時時間,單位毫秒.

具體源碼和實現說明:

/// <summary>
 /// 對指定主機執(zhí)行 ping 操作并返回結果
 /// Ping the specified host and return the result
 /// </summary>
 /// <param name="host">需要被 ping 的主機或 IP 地址 The hostname or IP address to ping</param>
 /// <param name="timeout">ping 超時時間,以毫秒為單位 Timeout duration in milliseconds for ping</param>
 /// <returns>包含 ping 操作結果的 PingResultInfo 對象 A PingResultInfo object containing the result of the ping operation</returns>
 public static PingResultInfo PingHost(string host, int timeout)
 {
     try
     {
         // 解析域名獲取 IP 地址
         // Resolve the domain name to get IP address
         IPAddress[] addresses = Dns.GetHostAddresses(host);
         if (addresses.Length == 0)
         {
             return new PingResultInfo
             {
                 Host = null,
                 Result = false,
                 Message = "No IP addresses resolved"
             };
         }
         using (Ping pingSender = new Ping())
         {
             PingOptions options = new PingOptions
             {
                 // 設置防止數據包被分片
                 DontFragment = true // Prevent packet fragmentation
             };
             // 數據緩沖區(qū),包含要發(fā)送的字符串數據
             // Data buffer containing the string data to send
             string data = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345";
             byte[] buffer = Encoding.ASCII.GetBytes(data);
             // 使用第一個解析的 IP 地址進行 ping 操作
             // Use the first resolved IP address to perform the ping
             IPAddress targetIP = addresses[0];
             // 發(fā)送 ping 請求并獲取回復
             // Send the ping request and obtain the reply
             PingReply reply = pingSender.Send(targetIP, timeout, buffer, options);
             // 創(chuàng)建并返回包含 ping 操作結果的 PingResultInfo 對象
             // Create and return a PingResultInfo object containing the ping result
             return new PingResultInfo
             {
                 Host = targetIP,
                 Result = reply.Status == IPStatus.Success,
                 Message = reply.Status == IPStatus.Success
                     ? $"Success: RoundTrip time={reply.RoundtripTime}ms; TTL={reply.Options.Ttl}; Data size={buffer.Length} bytes"
                     : $"Failed: Status={reply.Status}",
                 RoundTripTime = reply.Status == IPStatus.Success ? reply.RoundtripTime : -1,
                 Ttl = reply.Status == IPStatus.Success ? reply.Options.Ttl : -1,
                 DataSize = buffer.Length
             };
         }
     }
     catch (Exception e)
     {
         // 捕獲異常并返回錯誤信息
         // Catch any exceptions and return error information
         return new PingResultInfo
         {
             Host = null,
             Result = false,
             Message = $"錯誤: {e.Message} Error: {e.Message}"
         };
     }
 }

我們也可以直接PING域名,例如 www.baidu.com

并且可以自動解析出來該域名的IP地址(Host)

如果Ping一個不存在的IP,或者連不上的,例如192.168.0.1

顯示超時,并且Result狀態(tài)為false,代表沒連上。狀態(tài)值為TimeOut,說明超時了。

應用場景:

該功能可以應用于需要不定時驗證某個遠程主機或設備或其他機器是否還在線的情況。并根據狀態(tài)來展示具體主機是在線還是掉線。

到此這篇關于C# 實現Ping遠程主機功能的文章就介紹到這了,更多相關C# Ping遠程主機內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c#使用IAsyncEnumerable實現流式分段傳輸

    c#使用IAsyncEnumerable實現流式分段傳輸

    這篇文章主要為大家詳細介紹了c#如何使用IAsyncEnumerable實現流式分段傳輸,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • Unity幸運轉盤實戰(zhàn)項目

    Unity幸運轉盤實戰(zhàn)項目

    這篇文章主要為大家詳細介紹了Unity幸運轉盤實戰(zhàn)項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • C#簡單實現在網頁上發(fā)郵件的案例

    C#簡單實現在網頁上發(fā)郵件的案例

    本文分享一個C#利用SMTP發(fā)送郵件的案例,提供了前后臺代碼,方便大家學習。
    2016-03-03
  • C#?wpf實現截屏框熱鍵截屏的示例代碼

    C#?wpf實現截屏框熱鍵截屏的示例代碼

    這篇文章主要為大家詳細介紹了C#?wpf實現截屏框熱鍵截屏的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以學習一下
    2023-09-09
  • c#配置文件中自定義塊節(jié)點的方法

    c#配置文件中自定義塊節(jié)點的方法

    在.netcore中我們非常方便獲取配置文件節(jié)點參數,但是在非.netcore下一般 我們是使用中方法,本文我們將給大家詳細介紹c#配置文件中自定義塊節(jié)點的方法,文中有詳細的代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • C#動態(tài)webservice調用接口

    C#動態(tài)webservice調用接口

    動態(tài)調用webservice,就可以不用添加web引用了,上線的話也只是需要改一下wsdl地址就可以了
    2015-05-05
  • 深入解析C#設計模式中對橋接模式的具體運用

    深入解析C#設計模式中對橋接模式的具體運用

    這篇文章主要介紹了C#設計模式中對橋接模式的具體運用,橋接模式所強調的解耦在代碼維護中非常有用,需要的朋友可以參考下
    2016-02-02
  • C#使用iTextSharp從PDF文檔獲取內容的方法

    C#使用iTextSharp從PDF文檔獲取內容的方法

    這篇文章主要介紹了C#使用iTextSharp從PDF文檔獲取內容的方法,涉及C#基于iTextSharp操作pdf文件的相關技巧,需要的朋友可以參考下
    2015-06-06
  • C#調用mmpeg進行各種視頻轉換的類實例

    C#調用mmpeg進行各種視頻轉換的類實例

    這篇文章主要介紹了C#調用mmpeg進行各種視頻轉換的類,實例分析了C#調用mmpeg操作視頻文件的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • C#把UNICODE編碼轉換為GB編碼的實例

    C#把UNICODE編碼轉換為GB編碼的實例

    下面小編就為大家?guī)硪黄狢#把UNICODE編碼轉換為GB編碼的實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01

最新評論