Tôi cần tìm địa chỉ mac của thiết bị mà thiết bị của tôi nhận được yêu cầu TCP, tôi sẽ nhận địa chỉ IP của thiết bị bằng điểm cuối tcp nhưng tôi cần tìm hiểu địa chỉ mac của ứng dụng device.My sẽ chạy trên cả hai cửa sổ và linux, vì vậy xin vui lòng đề nghị cho tôi một phương pháp nền tảng chéo để tìm địa chỉ mac .. Bất kỳ thư viện tăng sẽ giúp tôi làm như vậy ??Tìm MacAddress từ Địa chỉ IP theo cách độc lập trên nền tảng
Trả lời
Thứ nhất, bạn không thể tìm thấy địa chỉ MAC cho bất kỳ giao diện mạng nào không nằm trên cùng một mạng cục bộ. Thông tin đó không được truyền qua bộ định tuyến.
Có một công cụ dòng lệnh được gọi là arp
có sẵn trên Unix và Windows cũng sẽ liệt kê địa chỉ IP và địa chỉ MAC của giao diện đã kết nối với PC của bạn. ví dụ:
arp -a
trên Windows cung cấp cho một cái gì đó như:
Interface: 9.175.198.236 --- 0x2
Internet Address Physical Address Type
9.175.198.129 00-1b-53-46-fa-7f dynamic
và trên một vẻ Unix giống nhau như:
foo.bar.com (10.27.68.72) at 00:50:56:AE:00:0B [ether] on eth0
baz.bar.com (10.27.68.77) at 00:50:56:AE:00:10 [ether] on eth0
? (10.27.68.1) at 00:50:5A:1B:44:01 [ether] on eth0
Bạn có thể thử gọi nó và phân tích các kết quả lập trình.
Cảm ơn, nhưng làm thế nào để gọi lệnh arp từ chương trình C++ của tôi ?? Không thực sự quen thuộc với điều này .. :( –
@Achuthananda MP: Trên OS X và Unix-alikes khác, bạn sẽ sử dụng fork và exec.Tôi không biết làm thế nào bạn sẽ làm điều đó trên Windows. – JeremyP
Điều đầu tiên cần lưu ý là ở lớp TCP, bạn không biết địa chỉ MAC.
Đối với trường hợp của bạn, tôi đoán bạn có thể làm hai việc:
sử dụng arp hoặc viết một đoạn mã tương tự như arp trông cho MAC cho các địa chỉ IP. Vấn đề với cách tiếp cận này là nó sẽ không hoạt động trong trường hợp khi nguồn nằm trong một mạng khác.
viết máy chủ của bạn theo cách yêu cầu thông tin này từ máy khách gửi yêu cầu TCP. Điều này có thể được thực hiện sau khi thành lập TCP. Máy khách cũng có thể tra cứu địa chỉ MAC của máy cho IP đã cho.
mã nguồn arp có sẵn trong liên kết bên dưới, lấy đoạn mã mà bạn quan tâm! Đó là mã c nên nó sẽ hoạt động tốt.
http://www.opensource.apple.com/source/network_cmds/network_cmds-328/arp.tproj/arp.c
- 1. Khóa tệp độc lập trên nền tảng?
- 2. Cách lấy địa chỉ IP từ địa chỉ Mac theo lập trình trên Android?
- 3. Nền tảng WCF có độc lập không?
- 4. Sử dụng luồng và ổ cắm trong C theo cách độc lập trên nền tảng
- 5. Cách viết mã độc lập nền tảng trong Haskell (ghc)
- 6. Đảo ngược ip, tìm tên miền trên địa chỉ IP
- 7. API TCP/IP đơn giản trên nền tảng chéo?
- 8. Làm cách nào để gọi .NET từ C++ theo cách độc lập với nền tảng có thể
- 9. Yêu cầu điều chỉnh theo địa chỉ IP trên Apache?
- 10. #ifdef DEBUG với CMake độc lập khỏi nền tảng
- 11. Độc lập nền tảng trong các tệp yêu cầu pip
- 12. Địa chỉ IP từ sk_buff
- 13. Cách nghe trên nhiều địa chỉ IP?
- 14. cách chuyển hướng miền theo địa chỉ IP quốc gia
- 15. Tìm địa chỉ IP trong iphone
- 16. Cách tìm số cổng của địa chỉ IP?
- 17. Cách phát hiện thay đổi địa chỉ IP theo lập trình trong Linux?
- 18. Cách độc lập nền tảng để nhận thư mục phông chữ?
- 19. Vị trí địa lý dựa trên Địa chỉ IP - PHP
- 20. Xử lý đặc trưng cho Windows trong nền tảng độc lập cách
- 21. Cách lấy tên máy chủ dựa trên địa chỉ IP?
- 22. Cách phát hiện thay đổi địa chỉ IP trên OSX theo lập trình trong C hoặc C++
- 23. Ngôn ngữ lập trình nền tảng
- 24. cách Nền tảng độc lập phát hiện nếu git được cài đặt
- 25. Nền tảng bộ nhớ độc lập được ánh xạ [file] IO
- 26. Tăng địa chỉ IP
- 27. Cách đăng nhập địa chỉ IP trên JBoss
- 28. Python: Cách độc lập nền tảng để sửa đổi biến môi trường PATH
- 29. Cách độc lập với nền tảng để có được giá trị float cực đại C++
- 30. pkg-config: cách nền tảng trung lập để tìm nơi cài đặt tệp .pc của tôi?
Thiết bị khác, điều khiển từ xa, tức là không trên cùng một mạng cục bộ? – Dervall
thiết bị kia cũng nằm trong cùng một mạng .. –