2013-04-25 29 views
7

Tôi không có nhiều kinh nghiệm về lập trình mạng và tôi đang viết một hệ thống đa nền tảng yêu cầu mỗi thiết bị có thể tìm thấy các thiết bị khác trong cùng một mạng LAN. một cách tiếp cận chính xác và có thể người dân nơi đây có thể cung cấp cho tôi một số kiến ​​nghị, đây là yêu cầu thiết kế của tôi,Cách tốt nhất để thực hiện khám phá thiết bị trên mạng LAN

  1. tôi đang sử dụng C++ và các giải pháp cần phải được đa nền tảng, mà ít nhất có thể chạy trên iOS, Windows , Android.

  2. Hệ thống phải có trọng lượng khá nhẹ và không hoạt động theo yêu cầu thiết lập hoặc mạng đặc biệt nếu có thể.

Dưới đây là cách tiếp cận khác nhau Tôi đang động não cho đến nay,

  1. Sử dụng giao thức UPnP, nhưng tôi không phải là rất quen thuộc với nó, và không có vẻ có nhiều ví dụ về cách sử dụng nó trong mã.

  2. Sử dụng phương pháp tiếp cận ổ cắm truyền thống, tạo cả Máy chủ/Khách hàng trên mỗi thiết bị và gửi gói dữ liệu tới mọi IP trên mạng LAN. Và làm mọi thứ theo cách thủ công sau đó. Nếu tôi sai, nếu tôi gửi một gói tin đến địa chỉ quảng bá, điều đó có nghĩa là hệ thống sẽ tự động gửi gói tin của tôi tới mọi IP trong mạng con?

  3. Sử dụng máy chủ bên ngoài, tất cả ứng dụng khách sẽ đăng ký với máy chủ bên ngoài đó, sau đó nhận thông tin của ứng dụng khách khác từ máy chủ. Tuy nhiên, tôi không chắc chắn thông tin nào mỗi khách hàng nên kết nối để xác định họ đang ở trong cùng một mạng LAN.

Hãy cho tôi biết nếu những gì tôi đang suy nghĩ tạo ra bất kỳ giác quan nào và lời khuyên nào được đánh giá cao.

+0

Người ta thường gửi gói UDP đến địa chỉ quảng bá, với thông tin thiết lập để thực hiện kết nối thông thường sau này. Các gói được gửi tới chương trình phát sóng sẽ được gửi tới mọi thiết bị trong mạng con đó. Tôi khuyên bạn nên bắn Wireshark để xem điều gì xảy ra đằng sau hậu trường. – Brad

+0

Cảm ơn thông tin, nhưng tôi nghe nói rằng các bộ định tuyến có thể được thiết lập để dừng phát sóng, và nó thường là một mặc định trong một mạng LAN. Điều đó có đúng không? Và nếu có, thì phương pháp như vậy không hoàn toàn đáng tin cậy thì – NachoChip

+0

Không, bộ định tuyến đi giữa mạng của bạn và mạng khác.Các gói tin phát sóng chỉ được gửi đến mạng của bạn, do đó cấu hình của bộ định tuyến không mang trên chúng. Ngoài ra, nếu một bộ định tuyến có thể thực hiện việc này, mạng của bạn sẽ không hoạt động. Các gói tin phát sóng rất quan trọng đối với các chức năng cơ bản như DHCP, UPnP và Bonjour (như trong câu trả lời của Marko). – Brad

Trả lời

3

Một tùy chọn bạn chưa liệt kê là giao thức ZeroConf's DNS-SD.

Nó được Apple sử dụng rất nhiều - thị trường là Bonjour (nhũ danh Rendezvous). Có tích hợp chặt chẽ vào iOS và MacOSX.
Apple cũng cung cấp triển khai Windows, một SDK và đã mở nguồn dịch vụ mDNS.

Android dường như hỗ trợ nó out of the box.

Ngoài ra còn có hỗ trợ mạnh mẽ và trưởng thành cho Linux dưới dạng Avahi, được bao gồm trong hầu hết các bản phân phối trên máy tính để bàn.

Có vẻ như nền tảng duy nhất mà người dùng cần cài đặt bất kỳ thứ gì là Windows và thậm chí sau đó được cài đặt với iTunes (được sử dụng để chia sẻ thư viện nhạc) và phần mềm cài đặt cho bất kỳ điểm truy cập không dây nào của Apple.

+0

FYI - điều cần chú ý: http://superuser.com/questions/730288/why-do-some-wifi-routers-block-multicast-packets-going-from-wired-to-wireless – hooby3dfx

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