2009-05-08 8 views

Trả lời

16

mở và đọc phần sau đây:

/proc/net/tcp - một danh sách các ổ cắm TCP mở

/proc/net/udp - một danh sách các ổ cắm UDP mở

/proc/net/raw - một danh sách tất cả các ổ cắm "thô"

Đây giống như các tệp "thông thường" mà bạn mở và đọc bằng filehandle và sẽ cung cấp cho bạn tất cả thông tin bạn có thể cần về mỗi socket.

+3

Cũng/proc/net/unix liệt kê các ổ cắm miền unix. – zoom23

0

Dữ liệu thô có thể được tìm thấy tại/proc/net/tcp,/proc/net/udp, v.v. Hãy tham khảo tiêu đề ở dòng đầu tiên để biết mô tả (mô tả).

3

Trong thư mục/proc/self/FD có symlink giả đem lại cho bạn tất cả các mô tả tập tin mở của bạn - ổ cắm cho cái gì đó như:

lrwx------ 1 root root 64 2009-05-08 07:45 4 -> socket:[4921] 
lrwx------ 1 root root 64 2009-05-08 07:45 5 -> socket:[4918] 
lrwx------ 1 root root 64 2009-05-08 07:45 6 -> socket:[5395] 

Lặp lại chúng bằng cách sử opendir, readdir() và sau đó thẩm vấn họ sử dụng readlink()

Nếu bạn biết FD 4 là ổ cắm, bạn có thể gọi hàm getsockname() trên đó để nhận địa chỉ gia đình địa chỉ, địa chỉ, v.v. nếu bị ràng buộc.

+0

Điều này không hoạt động đối với tất cả các ổ cắm. Chủ yếu, tôi thấy các thiết bị đầu cuối của tôi ở đây. Với nhiều kết nối mở, không phải tất cả các ổ cắm đều hiển thị. Công cụ tốt không phải là ít để có thêm những gì Shane Mason lưu ý. Cảm ơn bạn. –

4

Chương trình này có thể hữu ích cho bạn và cho thấy làm thế nào để phân tích/net/proc/* file sockstat.c

+0

Cảm ơn ví dụ. Tôi chỉ cần đi qua/proc/self/fd và kiểm tra liên kết nào là ổ cắm và tạo danh sách theo cách đó. Tôi sẽ đăng một bản cập nhật với giải pháp của tôi ở đây. Cảm ơn một lần nữa –

+0

Liên kết dường như không còn hoạt động nữa, mặc dù tìm kiếm trên google cho nó tìm thấy một số bản sao. –