2008-12-20 28 views
6

Tôi muốn phát triển chương trình Chatless LAN Chat đơn giản chỉ để giải trí. Tôi có thể làm cái này như thế nào ? Tôi nên sử dụng Kiến trúc kiểu nào?Phát triển chương trình Lừa đảo không cần máy chủ!

Năm ngoái tôi đã làm việc trên TCP, ứng dụng khách/máy chủ UDP Project.Đó là đơn giản (Máy chủ lắng nghe cổng/ổ cắm nhất định và Máy khách kết nối với cổng của máy chủ, v.v.) Nhưng tôi không biết cách phát triển " Serverless "LAN Chat chương trình. Tôi có thể làm cái này như thế nào? UDP, TCP, Multicast, Broadcast? hoặc chương trình nên hoạt động như cả máy chủ và máy khách?

+0

Trong trường hợp có ai đến đây tìm kiếm giải pháp làm việc, hãy kiểm tra điều này, pidgin (multiplatform) với bonjour/zeroconf. http://www.blog.highub.com/linux/use-bonjour-to-chat-on-ubuntu/ –

Trả lời

10

Cách đơn giản nhất là sử dụng UDP và đơn giản là phát tin nhắn của bạn trên mạng. Phiên bản nâng cao hơn một chút sẽ chỉ sử dụng chương trình phát sóng để khám phá các nút khác trong mạng.

  • Mỗi nút duy trì danh sách các đồng nghiệp đã biết.
  • Tin nhắn được gửi cùng với TCP đến tất cả các đồng nghiệp đã biết.
  • Khi một nút khởi động, nó sẽ gửi phát sóng UDP để khám phá các nút khác.
  • Khi một nút nhận được phát sóng khám phá, nó sẽ gửi "chính nó" tới nguồn phát sóng, để làm cho nó tự biết. Nút nhận sẽ thêm đài phát thanh vào danh sách riêng của các đồng nghiệp đã biết.
  • Khi một nút rơi ra khỏi mạng, nó sẽ gửi một chương trình phát sóng khác để thông báo cho các nút còn lại rằng họ nên xóa ứng dụng khách đã bỏ khỏi danh sách của họ.

Bạn cũng sẽ phải xem xét xử lý việc bỏ các nút mà không thông báo cho phần còn lại của mạng.

1

spread toolkit có thể hơi quá mức đối với những gì bạn muốn, nhưng là điểm bắt đầu thú vị.

Từ lời giới thiệu:


Spread là một bộ công cụ mã nguồn mở cung cấp một dịch vụ nhắn tin hiệu suất cao có nghĩa là kiên cường lỗi qua mạng cục bộ và rộng. Mở rộng các chức năng như một bus tin nhắn thống nhất cho các ứng dụng phân tán, và cung cấp khả năng hỗ trợ điểm, nhóm truyền thông, và hỗ trợ điểm tới điểm cao. Phạm vi dịch vụ trải rộng từ tin nhắn đáng tin cậy đến các tin nhắn được đặt hàng đầy đủ với đảm bảo phân phối.

Sự lây lan có thể được sử dụng trong nhiều ứng dụng được phân phối yêu cầu độ tin cậy cao, hiệu suất cao và giao tiếp mạnh mẽ giữa các tập con khác nhau của các thành viên. Bộ công cụ này được thiết kế để đóng gói các khía cạnh thách thức của các mạng không đồng bộ và cho phép xây dựng các ứng dụng phân tán đáng tin cậy và có khả năng mở rộng.

Spread bao gồm thư viện mà các ứng dụng người dùng được liên kết với, một daemon nhị phân chạy trên mỗi máy tính là một phần của nhóm bộ xử lý và nhiều chương trình tiện ích và trình diễn khác nhau.

Một số dịch vụ và lợi ích được cung cấp bởi Spread:

  • đáng tin cậy và khả năng mở rộng nhắn tin và tập đoàn truyền thông.
  • API rất mạnh mẽ nhưng đơn giản giúp đơn giản hóa việc xây dựng các kiến ​​trúc phân tán.
  • Dễ sử dụng, triển khai và bảo trì.
  • Khả năng mở rộng cao từ một mạng cục bộ đến các mạng diện rộng phức tạp.
  • Hỗ trợ hàng nghìn nhóm với các nhóm thành viên khác nhau.
  • Bật độ tin cậy của thư khi có lỗi máy, xử lý sự cố và phục hồi cũng như phân vùng mạng và hợp nhất.
  • Cung cấp phạm vi đảm bảo độ tin cậy, đặt hàng và ổn định cho tin nhắn.
  • Nhấn mạnh vào tính mạnh mẽ và hiệu suất cao.
  • Thuật toán phân phối hoàn toàn không có điểm trung tâm nào bị lỗi.
+0

Spread có làm gì để giải quyết vấn đề với NAT không? –

0

Táo iChat là một ví dụ về sản phẩm bạn đang hình dung. Nó sử dụng Bonjour (giao thức mạng zero-conf của apple) để xác định các đồng nghiệp trên mạng LAN. Sau đó, bạn có thể trò chuyện hoặc trò chuyện âm thanh/video với họ.

Tôi không hoàn toàn chắc chắn Bonjour hoạt động như thế nào bên trong, nhưng tôi biết nó sử dụng phát đa hướng. Khách hàng "đăng ký" dịch vụ trên mạng LAN, và giao thức Bonjour cho phép mỗi máy chủ lưu trữ để kéo lên một thư mục của máy chủ cho một dịch vụ nhất định (tất cả không có quản lý trung tâm).

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