다른 프로세스의 소켓을 종료하는방법

shint의 이미지


윈도우에서 다른 프로세스의 소켓을 종료하는 방법을 알고 싶습니다.
ESTABLISH로 보이는건 다 지우고 싶은 마음입니다.

netstat로 찾아서 taskkill로 프로세스를 죽이는 커맨드 입력방법은 알고 있습니다.
프로세스는 죽이지 않고.
해당 프로세스의 소켓을 제거하는 도스 커맨드명령어나 프로그램 개발에대해 알고 싶습니다.

chadr의 이미지

일반 어플상태에서 타 프로세스의 핸들을 가지고 놀기 위해서는 시스템 콜을 이용해서 타 프로세스의 핸들을 자신의 메모리영역에 매핑시키는 과정이 필요합니다.
소켓은 WSADuplicateSocket 함수를 이용하시면 됩니다. 자세한건 msdn을 참고 하시면 될것 같습니다.

이외 핸들은 DuplicateHandle를 사용하시면 되고 I/O Completion port는 두개 함수로도 사용이 불가능합니다.

그런데 핸들개념이라서 복제된 소켓에 closesocket을 한다고 해서 실제 소켓이 완전 닫히지는 않을거 같네요.

안된다면 드라이버 레벨로 내려가야합니다.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.