2011-06-18 39 views
7

Tôi đang làm việc trên một nguyên mẫu trò chơi mạng nhỏ, sẽ được phát trên mạng LAN sử dụng UDP. Để khám phá ra các máy tính khác trên mạng, tôi đã điều tra việc phát sóng. Tuy nhiên, tôi vẫn không chắc chắn về một vài chi tiết liên quan đến việc thiết lập/sử dụng socket UDP (newbie mạng). Tôi tìm thấy một thư viện tốt để sử dụng sau khi trò chơi được bắt đầu, nhưng lúc đầu, tất cả các máy tính chạy trò chơi phải được phát hiện và người ta phải được chọn làm máy chủ. Vì vậy, câu hỏi của tôi là như sau:Phát sóng UDP để phát hiện và thiết lập máy chủ LAN

  • Ổ cắm UDP có thể được sử dụng để nghe và gửi chương trình phát sóng không? Tôi khá chắc chắn câu trả lời cho điều này là có, nhưng tôi muốn xác minh nó.
  • Khi sử dụng UDP, bạn có thực sự phải sử dụng bind() không? Theo như tôi hiểu, connect() là không bắt buộc, cũng không phải là send()/recv(), vì chúng dành cho TCP (sendto()/recvfrom() là các thay thế).
+0

Đây là một câu hỏi được suy nghĩ cẩn thận nhưng có nhiều câu hỏi và có thể sẽ được phân phối tốt hơn dưới dạng câu hỏi riêng biệt. –

+0

@ 0A0D Tốt, tôi không chắc liệu tôi có nên chia nó ra vì chúng có liên quan gì đó không. Tôi sẽ để những người UDP lại với nhau và rút ra hai câu hỏi cuối cùng như những câu hỏi riêng biệt. – Gemini14

Trả lời

4
  1. Vâng, bạn có thể gửi chương trình phát sóng, gửi unicasts và nhận các gói (hoặc phát sóng hoặc unicast) tất cả từ một ổ cắm duy nhất. Điều này rất hữu ích khi thực hiện công việc "trả lời người gửi".

  2. Không phải mọi ổ cắm đều cần sử dụng liên kết. Nếu không, một cổng sẽ tự động được chọn cho bạn. Nhưng ai đó phải ràng buộc một số cổng được chia sẻ trước để gói thứ nhất (có thể là một phát sóng) được phân phối đúng cách. Gói đầu tiên chứa cổng nguồn và địa chỉ IP; các gói trả lời chỉ có thể sử dụng.

  3. Việc ràng buộc cả hai đầu vào số cổng cố định sẽ làm cho cấu hình tường lửa trở nên đơn giản hơn.

  4. setsockopt(SO_BROADCAST), nếu không bạn sẽ gặp lỗi khi cố gửi gói quảng bá.

+0

Câu trả lời rất rõ ràng, đặc biệt là chút về sự ràng buộc - nó có ý nghĩa hơn với tôi bây giờ. Cảm ơn bạn! – Gemini14

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