이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 22382|회답: 7

[윈폼] 【고속 통신】C# IP 주소 세그먼트 포트 멀티스레드 스캐너

[링크 복사]
게시됨 2015. 12. 11. 오후 3:17:37 | | | |

최근 몇 년간 RFID 리더기, 스마트 홈 게이트웨이, 온도 및 습도 센서가 업무에 자주 사용되며, 일반적으로 직렬 포트와 네트워크 포트가 있습니다. 현장 문제로 인해 직렬 포트는 일반적으로 덜 사용되며, 대부분은 네트워크 포트를 사용합니다. 연결 방식은 IP 주소와 포트이며, 일부 기기에는 검색 소프트웨어가 있고 어떤 기기는 없습니다. 테스트 환경과 사이트를 자주 사용하면 불가피하게 혼란스러워집니다. 최근 RFID 리더기는 ZN-100 이더넷 포트-시리얼 포트 모듈을 사용하며, 검색 소프트웨어(ZNetCom 유틸리티)가 우수하고 검색 속도도 매우 빠릅니다. (아래 참조)

저도 직접 개발해볼까 생각했는데, 우선 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 기반인가요?
다음:보이드 포인터 기본
게시됨 2015. 12. 11. 오후 3:51:53 |
게시됨 2015. 12. 11. 오후 6:00:48 |
프롬프트:이 게시물은 관리자나 운영자에 의해 차단되었습니다
게시됨 2016. 5. 22. 오후 3:13:38 |
아주 좋아
게시됨 2016. 8. 20. 오후 4:35:02 |
알고 보니 소유자의 스캐닝 프록시 소프트웨어도 이 소스 코드를 기반으로 개선되었습니다. 감사합니다!
게시됨 2016. 8. 21. 오후 1:11:18 |
왜 이게 안 되는 거지?
 집주인| 게시됨 2025. 12. 3. 오전 11:58:07 |
TCP 포트 연결 테스트



 집주인| 게시됨 2025. 12. 3. 오전 11:58:49 |
.NET/C#은 TCP 포트가 사용 가능한지 확인합니다
https://www.itsvse.com/thread-10721-1-1.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com