2012-03-19 40 views
5

Tôi đang triển khai ứng dụng iPhone/iPad cho phép người dùng gửi từng tin nhắn khác bằng giao thức bonjour. Về cơ bản, một máy chủ xuất bản dịch vụ của mình trên bonjour và các khách hàng kết nối với cùng một wifi có thể khám phá dịch vụ của mình và kết nối với nó để bắt đầu gửi tin nhắn. Vấn đề tôi đã tìm thấy là một số bộ định tuyến dường như có vấn đề với Bonjour. Khi chạy ứng dụng của tôi ở nhà hoặc tại một số nơi khác, nó hoạt động hoàn hảo. Việc xuất bản và khám phá các dịch vụ bonjour hoạt động hoàn hảo. Tuy nhiên, khi tôi thử ứng dụng của mình tại một trong những căn hộ của bạn tôi, một số (không phải tất cả) khách hàng không thể khám phá dịch vụ bonjour được xuất bản. Tôi cũng nhận thấy rằng các ứng dụng khác sử dụng Bonjour (như ứng dụng Remote của Apple) cũng gặp sự cố trên mạng đã nói. Sau khi làm một số đào tôi đã tìm thấy rằng những người khác đã có vấn đề tương tự với bonjour và một số bộ định tuyến. Do đó tôi có 2 câu hỏi:Cách khác để sử dụng giao thức Bonjour cho iPhone ngang hàng

1) Có ai biết nếu vấn đề này với Bonjour rằng một số bộ định tuyến dường như có vấn đề phổ biến không? Nói cách khác, nếu ứng dụng của tôi dựa vào Bonjour để hoạt động, tôi có phải lo lắng rằng nó sẽ không hoạt động trong 50% mạng WLAN hay hầu hết các router không có vấn đề gì với bonjour. Rõ ràng tôi không thể mong đợi bất cứ ai biết làm thế nào mỗi router ra có đề với gói Bonjour nhưng có thể có một số rất kinh nghiệm mạng có thể chỉ cho tôi đi đúng hướng :-p.

2) Thứ hai, nếu bonjour quá mạo hiểm của giao thức để xây dựng ứng dụng của tôi, một số lựa chọn thay thế có tính năng tương tự là gì? Các tính năng tôi sẽ (tốt nhất) cần sẽ là dịch vụ xuất bản và khám phá mà không cần người dùng phải tự nhập địa chỉ IP của các điện thoại khác.

Ok cảm ơn sự giúp đỡ của bạn! Tôi hiểu rằng đây là một câu hỏi rộng, nhưng bất kỳ trợ giúp nào đều được đánh giá cao! :)

+0

Bạn có thể kiểm tra xem bộ định tuyến đã có cài đặt để bật giao tiếp từ máy khách đến máy khách không? Một số bộ định tuyến WLAN "tách biệt" các máy khách với nhau. Đối với cách phổ biến này là - có khá một vài router với chức năng này. Các giao thức khám phá dịch vụ khác sẽ không làm việc trực tiếp giữa hai máy khách nếu sự cô lập của khách hàng có hiệu lực. – ldx

+0

Xin chào. Cảm ơn vì tiền hỗ trợ! Tôi sẽ phải kiểm tra xem nó ra. Vấn đề nảy sinh với bộ định tuyến của một người bạn vì vậy tôi sẽ phải đi qua chỗ cô ấy để kiểm tra nó. –

Trả lời

3

Đây có thể là một hạt khó khăn để crack. Sự cố khiến thiết bị không tìm thấy nhau trên các mạng nhất định có liên quan đến giao thông cơ bản (nghĩa là UDP đa hướng) và không phải Bonjour (hoặc mDNS hoặc bất kỳ thiết bị nào khác mà bạn muốn gọi).

Trong các điều khoản cấp cao, không nghiêm ngặt, dữ liệu đa hướng đặt nhiều tải hơn trên bộ định tuyến. Các mạng công ty lớn và đại học đôi khi muốn thả các tin nhắn Bonjour (nghĩa là các gói UDP được gửi tới nhóm multicast 224.0.0.251 trên cổng 5353). cải thiện hiệu suất chung. Ở đầu kia của quang phổ, một số bộ định tuyến trong nước thả các gói multicast ra khỏi hộp vì những lý do chỉ được biết đến với nhà sản xuất. Không có nhiều thứ bạn có thể làm về cả hai tình huống.

Thử chạy tcpdump trên mạng để xem các gói có thực sự đi qua hay không. Tôi đã không đi qua một bộ định tuyến nhà mà không chuyển tiếp chúng trong một thời gian. Nếu không, bạn sẽ phải tìm ra một số cơ sở tra cứu trung tâm [có thể phải đối mặt với internet, có lẽ?]. Nếu họ có thể nhìn thấy, sau đó có một cái gì đó với việc thực hiện của bạn.

Không có gì ngăn cản bạn viết giao thức đơn giản của riêng bạn để phát hiện dịch vụ được gửi qua multicast - chỉ có rất nhiều khách hàng Bonjour bằng nhiều ngôn ngữ khác nhau đã được viết và kiểm tra.

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