2014-04-21 23 views
5

Tôi có một ứng dụng mà tôi kế thừa nghe trên cổng 7001 cho chương trình phát sóng UDP từ thiết bị kiểm tra nội bộ của chúng tôi và gần đây tôi đã cập nhật một ứng dụng khác cần thực hiện tương tự. Cả hai ứng dụng phải có khả năng cùng tồn tại trên cùng một máy tính.Làm cách nào để phát hiện chương trình nào đang nghe cổng tcp/ip trong Windows?

Hiện tại, khi ứng dụng cập nhật gần đây của tôi cố gắng liên kết với cổng để nghe chương trình phát sóng UDP và không thành công, nó chỉ báo cáo rằng cổng không khả dụng và cho biết ứng dụng được kế thừa có thể đang chạy. Làm cách nào để ứng dụng của tôi phát hiện ứng dụng thực sự đang nghe trên cổng đó? Tôi đã thực hiện một tìm kiếm của Google và thậm chí đã tìm kiếm trang web này nhưng cho đến nay tôi đã không thể tìm thấy bất cứ điều gì ngoại trừ để sử dụng Task Manager, TCPView, hoặc netstat tại dòng lệnh.

Tôi muốn một kỹ thuật mà một trong hai sử dụng API Windows hoặc Windows thành phần hệ thống COM, vì cả hai ứng dụng được viết bằng VB6. (Tôi biết, tôi biết, nhưng tôi phải duy trì các ứng dụng này vì chúng là nhiệm vụ quan trọng.) Tuy nhiên, một giải pháp .NET cũng sẽ hữu ích trong trường hợp tôi cần nó trong các nỗ lực phát triển mới của tôi.

+0

GetTcpTable2 có thể giúp bạn xử lý id. câu hỏi tương tự ở đây [link] (http://stackoverflow.com/questions/13295277/check-on-avaiable-port-using-wmi-win32-class) – user2773289

+0

Không biết nếu bạn có thể sử dụng này hay không nhưng MSDN entry cho ở trên với một số mẫu mã là tại http://msdn.microsoft.com/en-us/library/windows/desktop/bb408406(v=vs.85).aspx –

+0

Bạn cũng có thể nhận được thông tin này qua WMI. Rất tiện dụng. – EJP

Trả lời

2
netstat -n -o 

Điều đó sẽ hiển thị Id quá trình và từ đó bạn có thể nhìn vào trình xem quy trình của Trình quản lý tác vụ, goto Xem -> Cột ... và kiểm tra Id tiến trình (PID). Sau đó, bạn có thể thấy tên của quá trình lắng nghe trên cổng đó.

Tất nhiên, bạn đang mong muốn một cách chương trình thực hiện điều này và API GetTCPTable2 là tốt nhất như là đã đề xuất. Trong thực tế, nếu bạn nhìn vào IAT (Import Address Table) cho netstat.exe, nó thực sự sử dụng API đó để lấy thông tin đó.

Có một cách để giao tiếp trực tiếp với một cửa sổ lệnh và nhận được kết quả của nó sử dụng đường ống và nó sẽ làm việc tốt nhưng cách lý tưởng là chỉ cần sử dụng các API cùng netstat sử dụng.

+0

Cảm ơn, điều này sẽ giúp tôi có được nơi tôi cần. Tôi không có thời gian để đi xa hơn với điều này nhưng ngay sau khi tôi có một số mã làm việc, tôi sẽ đăng nó ở đây. –

+0

Chỉ 'netstat --all --program | grep 8090' đã làm việc cho tôi. Chỉ cần chia sẻ. net-tools 1.60 netstat 1.42 (2001-04-15) –

Các vấn đề liên quan