【问题标题】:Memory dump using Ping .net使用 Ping .net 进行内存转储
【发布时间】:2015-09-05 20:09:15
【问题描述】:

我正在尝试对 Windows 窗体应用程序中的服务器执行 ping 操作,但是当我的程序运行时,我的计算机上有内存转储。非常非常奇怪。

在我的方法中,我只有:

private void CheckServer()
{
    this.txResponse.Text = "";

    IPAddress IpAdress = IPAddress.Parse("anAdress");
    Ping ping = new Ping();

    PingReply pingToReply = ping.Send(IpAdress);

    if (pingToReply.Status == IPStatus.Success)
        txResponse.Text = pingToReply.Status.ToString();
}

我真的不明白发生了什么。 我在 Windows 8 上使用带有 .NET Framework 4.5 的 Visual Studio 2012。如果需要更多信息,请告诉我。

【问题讨论】:

  • 在单步执行运行调试器的代码时是否得到相同的结果..?
  • 您是否为 IPAddress.Parse("anAdress"); 输入了真实的 IP 地址?如果不是,我想这会引发错误
  • Using ping in c# 的可能重复链接注意他们如何使用try{}catch{} 你应该遵循相同的结构
  • 我放这个是因为我不想在公共场合显示 IP 地址。我用google的ipadress 66.249.87.104测试过
  • 您是否有内存转储或内存泄漏

标签: c# .net server ping windows-applications


【解决方案1】:

验证IP地址解析成功;否则检查CheckServer方法之外的周边处理。

【讨论】:

  • 我用谷歌IP地址测试过,结果一样
【解决方案2】:

啊,当代码完全没有问题时,编程的乐趣就会爆发……(除了在其周围放置一个 try/catch 块之外,您的代码看起来还不错)

这可能是硬件问题(内存、磁盘等)、坏的 dll 或任何数量的事情在夜间发生碰撞。我假设您已经尝试重新启动计算机,并在 DOS 提示符下 ping 您的服务器。如果不这样做。

您可以尝试的一件事是直接使用您选择的命令行/ip 同步或异步调用 ping.exe,请参阅http://www.codeproject.com/Articles/25983/How-to-Execute-a-Command-in-C,然后解析输出以获得您需要的内容(以“Reply from”开头的行或“请求超时。”甚至是 % loss 行。

要尝试的另一件事是完全绕过 c# PingPingReply 调用并使用网络套接字和计时器,请参阅 http://sourceforge.net/projects/pingutil/?source=typ_redirect 特别是 ping.cs 文件。

这些解决方案可以让您潜在地围绕问题进行写作,但不一定能解决手头的问题,这似乎与您提供的代码相关的编程无关。

好的,其他想法... 1)对您的项目进行全部重建 2)尝试使用旧版本的 .NET 进行编译 3)创建一个新项目并将源代码块复制到新创建的文件中。 4)在另一台计算机上运行项目,看看是否得到相同的结果。任何可能会或可能不会生成的异常错误都不应导致核心转储。

另一个选项是分析核心转储,对于应用程序,请参阅:http://sourceforge.net/projects/core-analyzer/ 并查看 Tool for analyzing java core dump

更糟的是,您可能必须重新加载 Visual Studio 和/或 .NET。

【讨论】:

  • 谢谢,我会尽量按照你的建议去做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 2011-03-21
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
相关资源
最近更新 更多