2009-03-01 10 views
5

Tôi đang thử nghiệm mẫu ZeroConf tại http://www.mono-project.com/Mono.Zeroconf.Cách đăng ký dịch vụ với Mono.ZeroConf?

Tôi đang chạy OpenSuse 11 và Mono 2.2.

mã máy chủ của tôi là:

using System; 
using Mono.Zeroconf; 

namespace zeroconftestserver 
{ 
    class MainClass 
    { 
     public static void Main(string[] args) 
     { 
      RegisterService service = new RegisterService(); 
      service.Name = "test server"; 
      service.RegType = "_daap._tcp"; 
      service.ReplyDomain = "local."; 
      service.Port = 6060; 

      // TxtRecords are optional 
      TxtRecord txt_record = new TxtRecord(); 
      txt_record.Add ("Password", "false"); 
      service.TxtRecord = txt_record; 

      service.Register(); 
      Console.WriteLine("Service registered!"); 
      Console.ReadLine(); 
     } 
    } 
} 

Nhưng tôi không thể tìm thấy dịch vụ đã đăng ký của tôi với mã trình duyệt khách hàng mẫu cũng không phải với mzclient.

Cảm ơn!

Trả lời

1

Anh ấy đang sử dụng mzclient để kiểm tra mã Mono.Zeroconf của anh ấy ở trên. Toàn bộ điểm của Mono.Zeroconf là cung cấp nền tảng chéo, hỗ trợ nhiều nhà cung cấp mDNS (Avahi và Bonjour).

Dường như có vấn đề với API EntryGroup DBus Avahi và tôi đang xem xét nó trong Mono.Zeroconf. Tôi sẽ đăng một giải pháp ở đây, cũng như tạo một bản phát hành Mono.Zeroconf mới (Tôi là người duy trì dự án) khi tôi tìm ra vấn đề.

+2

Tôi có cùng một vấn đề. Gần 2 năm kể từ đó. Bất kỳ bản cập nhật? – Marek

6

Tôi cũng đã cố gắng sử dụng các tệp nhị phân được cung cấp tại trang dự án Mono.Zeroconf và xây dựng các thư viện từ nguồn để sử dụng trên Windows và không thể xuất bản dịch vụ có thể tìm thấy được bởi các ứng dụng khách khác. Tôi đã thử cả mã ví dụ trên trang web và MZClient được cung cấp.

Sau khi tìm hiểu thêm một chút, tôi đã tìm thấy một dự án được sử dụng cho thư mục Mono.Zeroconf libs. Bằng cách sử dụng các tệp nhị phân được kiểm tra trong dự án Growl for Windows tại Google Code (có vẻ là phiên bản 0.9.0 mới nhất), tôi đã có thể xuất bản thành công dịch vụ có thể tìm thấy với cả mã mẫu và MZClient.

Vì vậy, một công việc rõ ràng xung quanh sẽ là lấy các tệp nhị phân (Mono.Zeroconf và Mono.Zeroconf.Providers.Bonjour) từ dự án đó và sử dụng chúng thay vì các dự án do dự án cung cấp.

+1

Đối với những người tìm kiếm nó, bạn có thể tìm thấy các tập tin DLL ở đây: https://github.com/briandunnington/growl-for-windows/tree/master/Growl/Growl.Daemon/Third%20Party%20Assemblies – twig

+0

Được biên dịch DLL từ 7 năm trước đây? – ScottN

2

Tôi cũng không thể xuất bản dịch vụ. Tôi nhìn qua mã và có một lỗi trong Service.cs, setter UPort:

this.port = (ushort) IPAddress.HostToNetworkOrder((int) value); //overflow, port is always 0 

Nó phải là

this.port = (ushort) IPAddress.HostToNetworkOrder((short) value); 
+0

điều này gây hiểu nhầm, việc chuyển đổi int sang int không thể tràn qua – Marek

3

Các mã nhị phân ở mono-project.com/Mono.Zeroconf là ra của ngày và vẫn chứa mã gây ra sự cố này. Mã gần đây nhất (với tất cả các bản sửa lỗi) là this link nhưng yêu cầu bạn tự biên dịch mã.

1

biên dịch lại sau khi cập nhật nguồn từ liên kết sau đây đã giải quyết được vấn đề

https://github.com/mono/Mono.Zeroconf/tree/master/src

+1

Chỉ liên kết câu trả lời không được chào mừng đến Stack Overflow. – hims056

+1

Xin lỗi..nhưng nhận xét trước liên kết là tất cả những gì tôi muốn nói .. –

+0

@ hims056 khi bản sửa lỗi được biên dịch từ nguồn được cung cấp bởi liên kết, chắc chắn là ... – zezba9000