wcf-libを作成しますが、プロセス間通信が必要です。libを使用しているアプリを開くと、お互いにアナウンスします。UdpAnnouncementEndpointを使用しますが、機能します。ただし、イントラネットからアナウンスを受け取ります。私に何ができる ?
そして私はこのようなコードでエンドポイントを作成します:
private void ActionInitClientService()
{
// Create ClientSelt ServiceHost
_clientServiceHost = new ServiceHost(_clientInstance);
_clientServiceHost.AddServiceEndpoint((typeof (IClientService)), new NetNamedPipeBinding(), Info.Address);
// Make the client discoverable via Udp
// and Broadcast itself to Online announcement
_clientServiceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint());
var discoveryBehavior = new ServiceDiscoveryBehavior();
discoveryBehavior.AnnouncementEndpoints.Add(new UdpAnnouncementEndpoint());
_clientServiceHost.Description.Behaviors.Add(discoveryBehavior);
_clientServiceHost.Opened += OnOpenedClientServiceHost;
_clientServiceHost.Closed += OnClosedClientServiceHost;
}
ホストにAnnouncementsListenerを追加します。
private void ActionInitAnnouncementsListener()
{
var announcementService = new AnnouncementService();
announcementService.OnlineAnnouncementReceived += OnOnlineAnnouncementReceived;
announcementService.OfflineAnnouncementReceived += OnOfflineAnnouncementReceived;
_announcementsListener = new ServiceHost(announcementService);
_announcementsListener.AddServiceEndpoint(new UdpAnnouncementEndpoint());
}