2012-02-07 38 views
5

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

+0

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

+0

thiết bị kia cũng nằm trong cùng một mạng .. –

Trả lời

5

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.

+0

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 .. :( –

+0

@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

1

Đ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:

  1. 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.

  2. 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.

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