この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 22382|答える: 7

[WinForm] 【高速】C# IPアドレスセグメントポートマルチスレッドスキャナー

[リンクをコピー]
掲載地 2015/12/11 15:17:37 | | | |

近年では、RFIDリーダー、スマートホームゲートウェイ、温度・湿度センサーが仕事でよく使われています。一般的にシリアルポートとネットワークポートがあります。現場の理由からシリアルポートの使用は少なく、ほとんどがネットワークポートを使用しています。 接続方法はIPアドレスとポートで、検索ソフトが搭載されているものもあれば、ないものもあります。 テスト環境や現場を頻繁に使うことは必然的に混乱を招きます。 最近のRFIDリーダーはZN-100イーサネットポートからシリアルポートへのモジュールを使用しており、検索ソフトウェア(ZNetCom Utility)は優れており、検索速度も非常に速いです。 (以下に示すように)

自分で開発しようかと考えました。まず第一に、IPセグメントとポートはカスタマイズでき、使いやすいです。 検索速度は速くなければならず、マルチスレッドと非同期を急いで使いたいと思っています。 まず写真を撮ろう。



  1. #region 扫描方法

  2.         public void Scan(string m_host, int m_port)
  3.         {
  4.             //我们直接使用比较高级的TcpClient类
  5.             TcpClient tc = new TcpClient();
  6.             //设置超时时间
  7.             tc.SendTimeout = tc.ReceiveTimeout = 2000;

  8.             try
  9.             {
  10.                 //同步方法
  11.                   //IPAddress ip = IPAddress.Parse(host);
  12.                 //IPEndPoint IPendp = new IPEndPoint(ip, port);
  13.                 //tc.Connect(IPendp);

  14.                 //异步方法
  15.                 IAsyncResult oAsyncResult = tc.BeginConnect(m_host, m_port, null, null);
  16.                 oAsyncResult.AsyncWaitHandle.WaitOne(1000, true);//1000为超时时间

  17.                 if (tc.Connected)
  18.                 {
  19.                     //如果连接上,证明此端口为开放状态
  20.                        UpdateListBox(listBox1, m_host + ":" + m_port.ToString());
  21.                 }
  22.             }
  23.             catch (System.Net.Sockets.SocketException e)
  24.             {
  25.                 //容错处理
  26.                 //MessageBox.Show("Port {0} is closed", host.ToString());
  27.                 //Console.WriteLine(e.Message);
  28.             }
  29.             finally
  30.             {              
  31.                 tc.Close();
  32.                 tc = null;               
  33.                 scannedCount++;
  34.                 runningThreadCount--;

  35.             }
  36.         }
  37.         #endregion
  38. 如果使用同步方法会有明显的卡顿,用户体验不好;使用异步感觉很流畅,很爽,自己可以注释代码亲测。
コードをコピーします

ソースコードが以下の内容に貢献しています: IP端口扫描.rar (31.73 KB, ダウンロード数: 12)






先の:どのプロトコルがTCPベースで、どのプロトコルがUDPベースですか?
次に:Void Pointer Basic
掲載地 2015/12/11 15:51:53 |
掲載地 2015/12/11 18:00:48 |
プロンプト:その投稿は管理者またはモデレーターによってブロックされました
掲載地 2016/05/22 15:13:38 |
とても良いです
掲載地 2016/08/20 16:35:02 |
実は所有者のスキャンプロキシソフトウェアもこのソースコードを参照して改良されていることが判明しました。 ありがとうございます!
掲載地 2016/08/21 13:11:18 |
なぜこれがうまくいかないのでしょうか?
 地主| 掲載地 2025/12/03 11:58:07 |
TCPポート接続テスト



 地主| 掲載地 2025/12/03 11:58:49 |
.NET/C#はTCPポートが利用可能かどうかを確認します
https://www.itsvse.com/thread-10721-1-1.html
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com