문제

다양한 응용 프로그램으로 네트워크에서 보내고받은 바이트 양을 계산해야합니다. 먼저 LSP 사용에 대해 생각했지만 LSP를 전혀 사용하지 않는 응용 프로그램이 많이 있습니다 (예 : SMB). 이것이 제가 작은 스니퍼를 썼던 이유입니다. 이 응용 프로그램은 IP 수준에서 작동하며 RECVFROM을 사용하여 데이터를 수집합니다.

따라서 원격 호스트, 로컬 및 원격 포트의 주소가 있습니다. 이것은 꽤 멋지지만 현지 소켓 소유자의 PID도 필요합니다. 그렇다면 PID를 얻는 간단한 방법이 있습니까? 해결 방법은 gettcptable, getudptable 또는 allocateandgetudpextableFromStack 및 AllocateAndgetTCpextableFromStack을 사용하고 있습니다 (2K, XP, XP SP2 및 Vista 사이의 기능에는 많은 차이가 있습니다).

그렇다면 "getpidofsocket"기능이 있습니까? 해상도 Sholud는 다양한 언어를 사용할 수 있듯이 Winapi (.NET 없음)입니다. 예를 들어 C ++, Delphi.

도움이 되었습니까?

해결책

말해 주셔서 죄송하지만 사용합니다 GetTcpTable 또는 AllocateAndGetTcpExTableFromStack 해결 방법이 아니며 실제로 다른 NetStat 유형 응용 프로그램의 작동 방식입니다. afaik win32가 없습니다 "GetPIDOfSocket" 함수, 유일한 옵션은 포트 테이블 기능을 사용하여 투표하는 것입니다. 그러나 적어도 직접 코딩 할 수 있으며 Netstat 프로세스를 스폰 할 필요가 없습니다.

Sysinternals C 소스 코드를 참조하십시오 netstatp 여기. 많은 것이 없으며 볼만한 가치가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top