NetDetailForm.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using Oreo.NetMan.Commons;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Diagnostics;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13. using Y.Utils.DataUtils.Collections;
  14. using Y.Utils.DataUtils.UnitConvertUtils;
  15. using Y.Utils.WindowsUtils.ProcessUtils;
  16. namespace Oreo.NetMan.Views
  17. {
  18. public partial class NetDetailForm : Form
  19. {
  20. public NetDetailForm()
  21. {
  22. InitializeComponent();
  23. }
  24. private void NetDetailForm_Load(object sender, EventArgs e)
  25. {
  26. Task.Factory.StartNew(() =>
  27. {
  28. Thread.Sleep(3000);
  29. while (true)
  30. {
  31. if (R.NFS.IsNetFlowRun || R.NFS.IsNetPacketRun)
  32. {
  33. UIDgProcessDetailUpdate();
  34. UIDgConnectDetailUpdate();
  35. }
  36. Thread.Sleep(1000);
  37. }
  38. });
  39. }
  40. private void UIDgProcessDetailUpdate()
  41. {
  42. if (IsDisposed) return;
  43. BeginInvoke(new Action(() =>
  44. {
  45. if (R.NFS != null && ListTool.HasElements(R.NFS.NetProcessInfoList))
  46. {
  47. label1.Text = "丢包数:" + R.NFS.LostPacketCount;
  48. label2.Text = "下载:" + ByteConvertTool.Fmt(R.NFS.NetFlow.DownloadData) +
  49. " 上传:" + ByteConvertTool.Fmt(R.NFS.NetFlow.UploadData);
  50. R.NFS.NetProcessInfoList.ForEach(p =>
  51. {
  52. bool isUpdate = false;
  53. foreach (DataGridViewRow r in DgProcessDetail.Rows)
  54. {
  55. if (r.Cells["CoName"].Value.ToString() == p.ProcessName)
  56. {
  57. isUpdate = true;
  58. r.Cells["CoDownload"].Value = ByteConvertTool.Fmt(p.DownloadData);
  59. r.Cells["CoUpload"].Value = ByteConvertTool.Fmt(p.UploadData);
  60. r.Cells["CoDownloadCount"].Value = ByteConvertTool.Fmt(p.DownloadDataCount);
  61. r.Cells["CoUploadCount"].Value = ByteConvertTool.Fmt(p.UploadDataCount);
  62. r.Cells["CoConnectionCount"].Value = p.NetConnectionInfoList.Count();
  63. }
  64. }
  65. if (!isUpdate)
  66. {
  67. DgProcessDetail.Rows.Add(new object[] {
  68. p.ProcessIcon,p.ProcessName,
  69. ByteConvertTool.Fmt(p.DownloadData),ByteConvertTool.Fmt(p.UploadData),
  70. ByteConvertTool.Fmt(p.DownloadDataCount),ByteConvertTool.Fmt(p.UploadDataCount),
  71. p.DownloadBagCount});
  72. }
  73. });
  74. }
  75. }));
  76. }
  77. private void UIDgConnectDetailUpdate()
  78. {
  79. if (IsDisposed) return;
  80. BeginInvoke(new Action(() =>
  81. {
  82. if (R.NFS != null && ListTool.HasElements(R.NFS.NetProcessInfoList))
  83. {
  84. R.NFS.NetProcessInfoList.ForEach(p =>
  85. {
  86. if (ListTool.HasElements(p.NetConnectionInfoList) && p.ProcessIcon != null)
  87. {
  88. p.NetConnectionInfoList.ForEach(conn =>
  89. {
  90. try
  91. {
  92. bool isUpdate = false;
  93. foreach (DataGridViewRow r in DgvConnList.Rows)
  94. {
  95. if (r.Cells["DgvConnListProcess"].Value.ToString() == p.ProcessName &&
  96. r.Cells["DgvConnListLocalIP"].Value.ToString() == conn.LocalIP &&
  97. r.Cells["DgvConnListLocalPort"].Value.ToString() == conn.LocalPort.ToString())
  98. {
  99. isUpdate = true;
  100. r.Cells["DgvConnListProtocol"].Value = conn.ProtocolName;
  101. r.Cells["DgvConnListLocalIP"].Value = conn.LocalIP;
  102. r.Cells["DgvConnListLocalPort"].Value = conn.LocalPort;
  103. r.Cells["DgvConnListRemoteIP"].Value = conn.RemoteIP;
  104. r.Cells["DgvConnListRemotePort"].Value = conn.RemotePort;
  105. r.Cells["DgvConnListStatus"].Value = conn.Status;
  106. }
  107. }
  108. if (!isUpdate)
  109. {
  110. DgvConnList.Rows.Add(new object[] {
  111. p.ProcessIcon, p.ProcessName, conn.ProtocolName,
  112. conn.LocalIP, conn.LocalPort, conn.RemoteIP, conn.RemotePort, conn.Status
  113. });
  114. }
  115. }
  116. catch (Exception e) { }
  117. });
  118. }
  119. });
  120. }
  121. }));
  122. }
  123. }
  124. }