【问题标题】:Retrieving Tcp/IP usage on a mobile connection c#在移动连接 c# 上检索 Tcp/IP 使用情况
【发布时间】:2012-07-19 15:39:54
【问题描述】:

我目前正在编写一个系统日志程序,它通过 ftp 发送不同的日志。 我面临的问题是我的程序应该在上传之前和上传期间不断检查连接是否正在使用,以便在其他程序想要使用连接时停止发送数据包。

我实际上发现这个link 可以帮助我测量连接速度,但我认为我只能使用后者来发现某些内容是否已经在流式传输。 在阅读 System.Net.NetworkInformation 上的库条目后,检查各种网络统计信息和状态也不是问题。如前所述,我唯一的问题是检查是否有其他程序想要发送一些东西。

正如您可能从问题中看出的那样,我对这个主题非常陌生,并且是一个相当初级的程序员。我一直在阅读 System.Net.NetworkInformation 命名空间库并促进它的各种类、方法和委托。我有一种感觉,我在正确的轨道上,但只是没有到达那里。有人朝正确的方向推进了吗?

谢谢。

【问题讨论】:

  • 您是否想到了特定的移动平台?
  • TCP/IP 支持多个同时连接(虽然,到不同的套接字);你在做什么让你需要在连接时断开连接以便另一个程序可以使用它?
  • 它是windows 7或xp的嵌入式版本。基本上其他两个程序将主要使用 tcp/ip 连接。如果其他程序之一需要连接,我知道套接字只需要停止传输日志信息流即可。这可以理解吗?
  • 我仍然不清楚为什么您必须断开程序才能让另一个程序使用 tcp/ip。日志服务器应该能够处理多个连接——特别是如果它是 ftp。
  • 问题是带宽有限,因为数据是通过 GPRS 连接发送的,并且是位于救护车上的计算机。不担心服务器只是我将记录的程序在过去几周内无法定期发送或接收信息,没有人知道为什么。如果您建议我不应该担心带宽或完成我的日志文件的上传,这些文件是压缩的,只有大约 2-5KB 的大小。我只需要找出第 3 方软件失败的时间点。抱歉,如果我无法正确表达我的困难。

标签: c# networking tcp network-protocols windows-embedded


【解决方案1】:

我最终使用了 System.Net.NetworkInformation 库及其方法。

GetIsNetworkAvailable()、NetworkChange.NetworkAvailabilityChanged Eventhandler 和 TcpStatistics 方法帮助我收集有关连接的信息。 MSDN 和参考是使用前面提到的方法的一个很好的指南,我基本上使用了示例,稍加修改以满足我的需要。

msdn 网络信息: http://msdn.microsoft.com/de-de/library/system.net.networkinformation.aspx

GetIsNetworkAvailable 非常直接地返回布尔值,用于在连接开启或关闭时返回。

Networkchange.NetworkAvailabilityChanged 在连接丢失或重新连接时触发事件。有关它的用法,请参阅上面的 msdn 链接,了解一个非常有用的优秀示例。

TcpStatistics 返回有关已接受、启动、收到错误、连接失败、连接重置等的信息。这些是我迄今为止用来评估连接的五个。

我意识到您实际上不再需要有效地监控连接。 也许 NetworkInterface.GetAllNetworkInterfaces() 方法可以帮助找出哪个 Networkadapter 正在发送数据并且应该被监控。

我现在明白了 Peter Ritchie 对我的问题的看法。 FTP 传输运行得非常好,该协议完美地处理了文件的传输,到目前为止,在流式传输日志文件方面没有出现任何问题。在 4 周的测试中,我不断收到记录数据。

【讨论】:

  • 该应用程序在连接到救护车上的汽车电池的 PC 上运行,因此电池不是真正的问题。
猜你喜欢
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-08
相关资源
最近更新 更多