C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[1634] Re:자기 컴퓨터나 다른 사람의 컴퓨터의 포트를 조사할려면?
박지훈.임프 [cbuilder] 4050 읽음    1999-07-19 00:00
: 감사합니다. 임페리테님.
: 이 말씀을 먼저 드리고 싶네요.
: 컴포넌트까지 직접 올려주셔서 정말 감사드립니다.
: 이번에는 포트스캔에 대해서 질문을 드려볼까 합니다.
: 위의 제목처럼 자기 컴퓨터나 다른사람의 컴퓨터의 열려진
: 포트를 조사할려구 합니다.
: 프로토콜은 TCP/IP를 사용해서죠.
: 컴포넌트중에 그런컴포넌트가 없는거 같습니다.
: 그래서 API로 해볼려고 했는데 이쪽에는 전혀 지식이 없어
: 머리가 아픕네요.
: 바쁘신데 이질문으로 박지훈님의 귀중한 시간을 낭비하게
: 해서 정말 죄송합니다.
: 하지만 전 어떡해야 할지 꼭 알고 싶네요.
: 이번에도 친절한 가르침 부탁드립니다.
:
: 방랑자


임펠리테리입니다.
포트 스캔이라...
일단, 자기 컴퓨터라면 문제는 좀 간단합니다. 포트가 이미 열려있을때, 즉 사용중일때
다시 오픈하려고 시도하면 에러가 납니다. 그러니까 폼에 tcp/ip류의 컴퍼넌트를,
예를 들어 클라이언트소켓과 같은 것을 하나 배치하고 해당 포트번호를 오픈하려고
시도하고는 OnError등에서 잡히면 해당 포트는 사용중인거죠.
또, 꼭 자체 프로그래밍을 통하지 않아도 된다면 컴맨드라인에서 netstat 명령으로
한꺼번에 알아낼 수 있습니다.

만약 원격의 다른 컴퓨터라면.. 조금 복잡해집니다. 만약 특정 프로토콜에 대해서
조사하려고 한다면, 예를 들어서 udp로 포트가 열려져 있는지를 알아보려면,
해당 포트로 접속을 시도하고 접속이 되는지를 알아볼 수 있겠죠. 하지만 알아보려는
컴퓨터의 해당 포트가 현재 접속을 시도하는 프로토콜과 다른 프로토콜에 의해
사용되고 있는 경우라면 당연히 연결이 안되죠.
예를 들어 udp로 열려있는 포트를 소켓으로 접속시도하면 당연히 연결이 되지 않고,
그러므로 현존하는 모든 프로토콜로 시도를 해봐야 가능하겠네요. 흠.. 이런 무식한
방법이 실제로 유용하리라고 생각되지는 않네요.. ^^;;;

자기 컴퓨터일 경우, WNetGetConnection() 이라는 api 함수를 사용하면 될 거라고
제 옆에 앉은 프로그래머가 알려주는군요. 하지만 실제로 해보지는 않았습니다.
이 함수가 속해있는 함수군인 WNet 함수들은 직접 사용해본 경험을 가진 사람이
그리 많지 않죠.

제가 아는 한 이것저것 동원해서 답변을 짜집기해봤습니다.
도움이 될지는.. 모르겠네요.

그럼 참고하시길...

+ -

관련 글 리스트
1605 [질문] 자기 컴퓨터나 다른 사람의 컴퓨터의 포트를 조사할려면? 방랑자 3564 1999/07/19
1634     Re:자기 컴퓨터나 다른 사람의 컴퓨터의 포트를 조사할려면? 박지훈.임프 4050 1999/07/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.