在 Visual Studio C# 中发出 Ping 请求
Posted
技术标签:
【中文标题】在 Visual Studio C# 中发出 Ping 请求【英文标题】:Make Ping request in Visual Studio C# 【发布时间】:2021-11-12 00:09:29 【问题描述】:所以我对 Visual Studio 和 C# 非常陌生,但是在我的应用程序中创建 Ping cmd 时遇到了麻烦。我已经包含了代码和图像。基本上,当我运行应用程序并尝试发出 ping 请求时,它只会将我带到 App.g.i.cs
文件并突出显示此代码
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
;
#endif
所以我不知道我到底哪里错了。我知道这可能是一个非常愚蠢的问题,但我还不熟悉 Visual Studio。希望有任何建议:) 这是代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.ComponentModel;
using System.Threading;
// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace Ping_IP
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
public MainPage()
this.InitializeComponent();
private void Button_Click(object sender, RoutedEventArgs e)
Ping pingsender = new Ping();
PingReply reply = pingsender.Send(ip_address.ToString());
if (reply.Status == IPStatus.Success)
status_info.Text = "Sucess! - " + DateTime.Now.ToLocalTime(); //reply.Status.ToString();
else
status_info.Text = "Failed... - " + DateTime.Now.ToLocalTime();
【问题讨论】:
检查调试器中的e
参数——它会告诉你出了什么问题。假设ip_address
是一个WPF 文本框,使用ip_address.Text
来获取输入的文本,而不是ip_address.ToString()
。您可能希望在事件处理程序处设置断点并逐步执行以获取更多信息。
@KlausGütter 好的谢谢你还是一样的东西,但我确实把它改成了ip_address.Text
在代码中检查e
会是什么样子?
在调试模式下禁用未处理的异常处理程序。它会阻止 Visual Studio 识别异常并停止异常真正发生的位置。
您也可以将整个事件处理程序包装在try...catch
中,如果出现异常,请将异常消息写入status_info.Text
。
@ThomasWeller 好吧,这听起来是个好主意,我只是不知道该怎么做哈哈。有什么建议吗?
【参考方案1】:
参考了Klaus Gütter的意见,成功返回数据。
PingReply reply = pingsender.Send(ip_address.Text);
完整代码
private void Button_Click(object sender, RoutedEventArgs e)
Ping pingsender = new Ping();
PingReply reply = pingsender.Send(ip_address.Text);
if (reply.Status == IPStatus.Success)
status_info.Text = "Sucess! - " + DateTime.Now.ToLocalTime(); //reply.Status.ToString();
else
status_info.Text = "Failed... - " + DateTime.Now.ToLocalTime();
尝试捕捉
private void Button_Click(object sender, RoutedEventArgs e)
Ping pingsender = new Ping();
try
PingReply reply = pingsender.Send(ip_address.Text);
if (reply.Status == IPStatus.Success)
status_info.Text = "Sucess! - " + DateTime.Now.ToLocalTime(); //reply.Status.ToString();
else
status_info.Text = "Failed... - " + DateTime.Now.ToLocalTime();
catch (Exception)
MessageBox.Show("something wrong");
尝试失败时提示。
【讨论】:
非常感谢您!所以try
和catch
有效,因为它不断抛出Exception
,我不知道为什么。我确实看到了这一点 Exception thrown: 'System.PlatformNotSupportedException' in System.Net.Ping.dll Exception thrown: 'System.Net.NetworkInformation.PingException' in System.Private.CoreLib.dll
您能否更新您的问题并提供更多信息?
如果您不介意,可以点击“✔”将我的回复标记为已接受答案。它还将帮助其他人解决类似的问题。以上是关于在 Visual Studio C# 中发出 Ping 请求的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Raspberry Pi 3 连接到 Visual Studio? (更新)
visual studio 2013 中更改C#项目的 Framework 版本