2011-10-02 1 views
2

즉, 127.0.0.1에서 수신 대기하는 서버가 있고 TCP 연결이 들어오는 경우 어떻게 클라이언트의 프로세스 ID를 결정할 수 있습니까?Windows에서 로컬 네트워크 소켓의 다른 쪽 끝에 어떤 프로세스가 있는지 어떻게 알 수 있습니까?

또한 API가없는 경우 어디에서 더 정보를 추출 할 수 있습니까?

(이의 목적은 수락하거나 요청하는 프로세스를 기반으로 요청을 거부하는 로컬 HTTP 프록시 서버를 수정하는 것입니다.)

편집 : palacsint의 대답은 아래을 필요한 그냥 뭐 어떤 this answer to a similar question을 찾기 위해 저를 주도

답변

1
netstat -a -o 

인쇄에게 그것을 당신이 127.0.0.1에 듣고 becase가 동일한 시스템에있는 귀하의 답변에 대한

+0

대단히 감사합니다. 대답과 약간의 검색에서이 질문을 발견했습니다.이 API는 내가 필요한 API입니다. http://stackoverflow.com/questions/1414740/windows-process-and -ip-address-that-connected-to – Sixfivefivethreefive

0

유일한 방법은 연결 프로세스에서 식별자가 포함 된 사용자 지정 헤더를 보내는 경우입니다. 이는 네트워킹 계층이 응용 프로그램 계층과 완전히 분리되어 있기 때문입니다 (힌트 : OSI MODEL). 이렇게하면 교환 된 메시지 (읽기 : 네트워킹 패킷)가 발생하면 위의 상황을 신경 쓰지 않고 하위 계층 소프트웨어를 작성할 수 있습니다 미리 정해진 형식 (읽기 : 같은 프로토콜을 사용)...

+0

감사를 가정하지만,이 확실하게 유일한 방법이 될 수는 없습니다. 시스템의 어딘가에 정보가 저장되므로 이론적으로 분리 된 층을 무시한다고해도 정보를 검색 할 수 있어야합니다. – Sixfivefivethreefive

+0

그러나 프록시 서버가 얻는 것은 본질적으로 일부 네트워크 패킷입니다. 원격 프로세스가 Windows, Linux, Solaris 등에서 실행되고 있는지 또는 로컬 시스템에서 실행 중인지 여부는 상관하지 않습니다. 또한 pids는 완전히 신뢰할 수 없기 때문에 어떤 정보도 보유하지 않습니다. 각 실행마다 무작위이므로 하드 코드 할 수 없으며 PIDS로 구성된 필터를 구성 할 수 있습니다 – LordDoskias

+0

이것은 로컬 연결에만 해당하므로 127.0에 연결된 프로세스입니다. 0.1이다. 서버가 127.0.0.1을 수신하면 연결이 시작되고 서버는 연결을 처리하는 프로세스 ID를 어떻게 든 결정한 다음 프로세스 ID에서 프로세스 이름, 경로 등을 조회하고 이에 따라 응답을 생성 할 수 있습니다. – Sixfivefivethreefive

관련 문제