views:

3446

answers:

11

Greetings,

I want to be able to figure out what port a particular program is using. Are there any programs available online or that come with windows that will tell me which processes are using which ports on my computer?

PS - before you downmod this for not being a programming question, I'm looking for the program to test some networking code.

A: 

most decent firewall programs should allow you to access this information. I know that Agnitum OutpostPro Firewall does.

Toby Mills
+1  A: 

At a command line, netstat -a will give you lots o' info.

CodeRot
I'd vote this up if I had any votes left.
Unkwntech
A: 

Windows comes with the netstat utility, which should do exactly what you want.

Adam Rosenfield
+24  A: 

netstat -b -a lists the ports in use and gives you the executable that's using each one. I believe you need to be in the administrator group to do this, and I don't know what security implications there are on Vista.

I usually add -n as well to make it a little faster, but adding -b can make it quite slow.

Edit: If you need more functionality than netstat provides, vasac suggests that you try TCPView.

Graeme Perrow
Perfect, thank you!
AlexeyMK
If anybody has the rights to edit an answer, consider adding vasac's answer below (TCPView) for anybody that needs a more feature-full version of this with a real gui
AlexeyMK
I added the link to TCPView to my answer.
Graeme Perrow
A: 

You can use the 'netstat' command for this. There's a description of doing this sort of thing here.

tkerwin
+9  A: 

TCPView can do what you asked for.

vasac
Thank you; netstat is more than enough for my needs but if I ever need something more hardcore I'll be sure to use TCPView. Should be added to the accepted answer but alas I don't have the right to Edit yet.
AlexeyMK
A: 

"netstat -natp" is what I always use.

Steve Baker
+2  A: 

If your prefer a GUI interface CurrPorts is free and works with all versions of windows. Shows ports and what process has them open.

ctcherry
another good alternative. wow, didn't know this was such a popular subject :)
AlexeyMK
A: 

Open Ports Scanner works for me.

Arne Evertsson
+2  A: 

You may already have Process Explorer (from Sysinternals, now part of Microsoft) installed. If not, go ahead and install it now -- it's just that cool.

In Process Explorer: locate the process in question, right-click and select the TCP/IP tab. It will even show you, for each socket, a stack trace representing the code that opened that socket.

Adam Mitz
+1  A: 

On Vista, you do need elevated privileges to use the -b option with netstat. To get around that, you could run "netstat -ano" which will show all open ports along with the associated process id. You could then use tasklist to lookup which process has the corresponding id.

C:\>netstat -ano

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  ...
  TCP    [::]:49335             [::]:0                 LISTENING       1056
  ...

C:\>tasklist /fi "pid eq 1056"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
sqlservr.exe                  1056 Services                   0     66,192 K
Jim Olsen