Ejemplo n.º 1
0
        void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            PeerNameRecord peer = e.PeerNameRecord;

            foreach (IPEndPoint ep in peer.EndPointCollection)
            {
                if (ep.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    try
                    {
                        string        endpointUrl = string.Format("net.tcp://{0}:{1}/P2PService", ep.Address, ep.Port);
                        NetTcpBinding binding     = new NetTcpBinding();
                        binding.Security.Mode = SecurityMode.None;
                        IP2PService serviceProxy = ChannelFactory <IP2PService> .CreateChannel(
                            binding, new EndpointAddress(endpointUrl));

                        PeerList.Add(
                            new PeerEntry
                        {
                            PeerName      = peer.PeerName,
                            ServiceProxy  = serviceProxy,
                            DisplayString = serviceProxy.GetName(),
                            State         = PeerState.User,
                            Player        = serviceProxy.GetPlayer(),
                            PlayerId      = serviceProxy.GetPlayerId()
                        });
                        ResolveProgressChanged();
                    }
                    catch (EndpointNotFoundException)
                    {
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Обрабработка найденного объекта
        /// </summary>
        private void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            var peer = e.PeerNameRecord;

            foreach (IPEndPoint ep in peer.EndPointCollection)
            {
                if (ep.Address.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    continue;
                }

                try
                {
                    var endpointUrl = string.Format("net.tcp://{0}:{1}/ContentReceiver", ep.Address, ep.Port);
                    var binding     = new NetTcpBinding {
                        Security = { Mode = SecurityMode.None }
                    };

                    var contentReceiver = ChannelFactory <IContentReceiver> .CreateChannel(
                        binding, new EndpointAddress(endpointUrl));

                    _peerList.Add(new Peer
                    {
                        PeerName        = peer.PeerName,
                        ContentReceiver = contentReceiver,
                        ReceiverName    = contentReceiver.GetName()
                    });
                }
                catch (EndpointNotFoundException ex)
                {
                    log.Warn(ex, "Ошибка во время обновления пиров. Неизвестный пир");
                }
            }
        }
Ejemplo n.º 3
0
        private void resolver_ResolverProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            PeerNameRecord peer = e.PeerNameRecord;//taking link for record with peer name that was detected

            var endPointCollection = peer.EndPointCollection;

            foreach (IPEndPoint endPoint in endPointCollection)
            {
                if (endPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    try
                    {
                        string        endPointUrl = string.Format($"net.tcp://{endPoint.Address}:{endPoint.Port}/P2PService");
                        NetTcpBinding binding     = new NetTcpBinding();
                        binding.Security.Mode = SecurityMode.None;

                        IP2PService serviceProxy =
                            ChannelFactory <IP2PService> .CreateChannel(binding, new EndpointAddress(endPointUrl));

                        peerList.Add(new PeerEntry
                        {
                            PeerName      = peer.PeerName,
                            ServiceProxy  = serviceProxy,
                            DisplayString = serviceProxy.GetName()
                        });
                    }
                    catch (Exception exception)
                    {
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            PeerNameRecord peer = e.PeerNameRecord;

            foreach (IPEndPoint ep in peer.EndPointCollection)
            {
                //if (ep.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                if (ep.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
                {
                    try
                    {
                        string        endpointUrl = string.Format(endpointuriformat, ep.Address, ep.Port);
                        NetTcpBinding binding     = new NetTcpBinding();
                        //binding.Security.Mode = SecurityMode.None;
                        binding.Security.Mode = SecurityMode.None;

                        /////
                        /////
                        // Stream add
                        ////
                        ////
                        binding.TransferMode           = TransferMode.Streamed;
                        binding.MaxReceivedMessageSize = 20134217728; // 20 GB
                        binding.MaxBufferPoolSize      = 1024 * 1024; // 1 MB
                        ////
                        ////
                        ////
                        ////

                        IP2PService serviceProxy = ChannelFactory <IP2PService> .CreateChannel(
                            binding, new EndpointAddress(endpointUrl));

                        PeerEntry entry = new PeerEntry
                        {
                            PeerName      = peer.PeerName,
                            ServiceProxy  = serviceProxy,
                            DisplayString = serviceProxy.GetName(),
                        };

                        //Vault.Peers.Add(peer);
                        Logger.Log.Info(endpointUrl);
                        Logger.Log.Info(entry.PeerName);
                        Logger.Log.Info(entry.Comment);
                        Logger.Log.Info("\t Endpoint:{0}", ep);

                        Vault.Peers.Add(entry);
                    }
                    catch (EndpointNotFoundException)
                    {
                        //Vault.Peers.Add(
                        //   new PeerEntry
                        //   {
                        //       PeerName = peer.PeerName,
                        //       DisplayString = "Unknown Peer",
                        //   });
                    }
                }
            }
        }
Ejemplo n.º 5
0
        // 自訂非同步解析作業正在執行中,所呼叫的方法
        private void ResolveProgressChangedCallback(object sender, ResolveProgressChangedEventArgs e)
        {
            // 取得非同步作業的進度百分比
            // 並藉此改變ProgressBar物件的顯示進度
            progressBar.Value = e.ProgressPercentage;

            // 取得PNRP Peer Name記錄物件
            PeerNameRecord pnr = e.PeerNameRecord;

            foreach (IPEndPoint endpoint in pnr.EndPointCollection)
            {
                lstPeerNameRecord.Items.Add(endpoint);
            }
        }
        void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            // Get peer record from event args
            PeerNameRecord peer = e.PeerNameRecord;

            // Examine endpoints for peer
            peer.EndPointCollection.Where(ep => ep.Address.AddressFamily == AddressFamily.InterNetwork)
            .AsParallel().ForAll(ep =>
            {
                try
                {
                    // Get service reference
                    string endpointUrl       = string.Format("net.tcp://{0}:{1}/P2PService", ep.Address, ep.Port);
                    var binding              = new NetTcpBinding();
                    binding.Security.Mode    = SecurityMode.None;
                    IP2PService serviceProxy = ChannelFactory <IP2PService> .CreateChannel(binding, new EndpointAddress(endpointUrl));

                    lock (peersLock)
                    {
                        peerList.Add(
                            new PeerEntry
                        {
                            PeerName       = peer.PeerName,
                            ServiceProxy   = serviceProxy,
                            DisplayString  = serviceProxy.GetName(),
                            ButtonsEnabled = true
                        }
                            );
                    }
                }
                catch (EndpointNotFoundException)
                {
                    // Add client but not extra info.
                    lock (peersLock)
                    {
                        peerList.Add(
                            new PeerEntry
                        {
                            PeerName       = peer.PeerName,
                            DisplayString  = "Unknown peer",
                            ButtonsEnabled = false
                        }
                            );
                    }
                }
            });
        }
Ejemplo n.º 7
0
        private void Resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            PeerNameRecord peer = e.PeerNameRecord;

            peer.EndPointCollection.Where(point => point.Address.AddressFamily == AddressFamily.InterNetwork)
            .AsParallel()
            .ForAll(
                point =>
            {
                try
                {
                    string endpointUrl = string.Format("net.tcp://{0}:{1}/PeerToPeerService", point.Address, point.Port);
                    var binding        = new NetTcpBinding {
                        Security = { Mode = SecurityMode.None }
                    };
                    IPeerToPeerService serviceProxy = ChannelFactory <IPeerToPeerService> .CreateChannel(binding,
                                                                                                         new EndpointAddress(endpointUrl));

                    lock (_peersLock)
                    {
                        _peerList.Add(new PeerEntry
                        {
                            PeerName       = peer.PeerName,
                            ServiceProxy   = serviceProxy,
                            DisplayString  = serviceProxy.GetName(),
                            ButtonsEnabled = true
                        });
                    }
                }
                catch (EndpointNotFoundException)
                {
                    lock (_peersLock)
                    {
                        _peerList.Add(new PeerEntry
                        {
                            PeerName       = peer.PeerName,
                            DisplayString  = "Unknown peer",
                            ButtonsEnabled = false
                        });
                    }
                }
            });
        }
Ejemplo n.º 8
0
        void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            PeerNameRecord peer = e.PeerNameRecord;

            foreach (IPEndPoint ep in peer.EndPointCollection)
            {
                if (ep.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    try
                    {
                        string        endpointUrl = string.Format("net.tcp://{0}:{1}/P2PService", ep.Address, ep.Port);
                        NetTcpBinding binding     = new NetTcpBinding();
                        binding.Security.Mode = SecurityMode.None;
                        IP2PService serviceProxy = ChannelFactory <IP2PService> .CreateChannel(
                            binding, new EndpointAddress(endpointUrl));

                        peerList.Add(
                            new PeerEntry
                        {
                            PeerName      = peer.PeerName,
                            ServiceProxy  = serviceProxy,
                            DisplayString = serviceProxy.GetName()
                        });
                        Console.WriteLine("Peer {0} is found", peer.PeerName);
                    }
                    catch (EndpointNotFoundException)
                    {
                        //peerList.Add(
                        //   new PeerEntry
                        //   {
                        //       PeerName = peer.PeerName,
                        //       DisplayString = "Unknown type"
                        //   });
                        Console.WriteLine("Peer {0} of unknown type is found", peer.PeerName);
                    }
                }
            }

            if (peerList.Count > 0)
            {
                PeersAreFound?.Invoke(this, EventArgs.Empty);
            }
        }
Ejemplo n.º 9
0
        private void ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            var peer = e.PeerNameRecord;

            foreach (var ep in peer.EndPointCollection)
            {
                if (ep.Address.AddressFamily != AddressFamily.InterNetworkV6)
                {
                    continue;
                }

                try
                {
                    string endpointUrl = $"net.tcp://[{ep.Address}]:{ep.Port}/P2PService";
                    var    binding     = new NetTcpBinding {
                        Security = { Mode = SecurityMode.Transport }
                    };
                    var serviceProxy = ChannelFactory <IP2PService> .CreateChannel(
                        binding, new EndpointAddress(endpointUrl));

                    _home.ListPeerEntryAdd(
                        new PeerEntry
                    {
                        PeerName       = peer.PeerName,
                        ServiceProxy   = serviceProxy,
                        DisplayString  = serviceProxy.GetName(),
                        ButtonsEnabled = true
                    });
                }
                catch (EndpointNotFoundException)
                {
                    _home.ListPeerEntryAdd(
                        new PeerEntry
                    {
                        PeerName       = peer.PeerName,
                        DisplayString  = "Неизвестный пир",
                        ButtonsEnabled = false
                    });
                }
            }
        }
        void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            PeerNameRecord peer = e.PeerNameRecord;

            foreach (IPEndPoint ep in peer.EndPointCollection)
            {
                if (ep.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    try
                    {
                        string        endpointUrl = string.Format($"net.tcp://{ep.Address}:{ep.Port}/P2PService");
                        NetTcpBinding binding     = new NetTcpBinding {
                            Security = { Mode = SecurityMode.None }
                        };
                        IP2PService serviceProxy = ChannelFactory <IP2PService> .CreateChannel(
                            binding, new EndpointAddress(endpointUrl));

                        PeerList.Items.Add(
                            new PeerEntry
                        {
                            PeerName       = peer.PeerName,
                            ServiceProxy   = serviceProxy,
                            DisplayString  = serviceProxy.GetName(),
                            ButtonsEnabled = true
                        });
                    }
                    catch (EndpointNotFoundException)
                    {
                        PeerList.Items.Add(
                            new PeerEntry
                        {
                            PeerName       = peer.PeerName,
                            DisplayString  = "Unknown peer",
                            ButtonsEnabled = false
                        });
                    }
                }
            }
        }
Ejemplo n.º 11
0
        private void OnPeerResolverFound(object sender, ResolveProgressChangedEventArgs e)
        {
            var peer = e.PeerNameRecord;

            foreach (var ep in peer.EndPointCollection)
            {
                if (ep.AddressFamily == AddressFamily.InterNetwork)
                {
                    var remoteUrl = string.Format("net.tcp://{0}:{1}/P2PService", ep.Address, ep.Port);
                    var binding   = new NetTcpBinding();
                    binding.Security.Mode = SecurityMode.None;

                    try
                    {
                        var peerContext = AvailablePeers.FirstOrDefault(x => x.PeerEntry.Address == remoteUrl);
                        if (peerContext == null)
                        {
                            IP2PService remoteService = ChannelFactory <IP2PService> .CreateChannel(
                                binding, new EndpointAddress(remoteUrl));

                            var peerEntry = new PeerEntry(remoteService, remoteUrl);
                            _foundPeers.Add(peerEntry);

                            _logger.Debug($"New peer found: {peerEntry}");
                        }
                        else
                        {
                            _foundPeers.Add(peerContext.PeerEntry);
                        }
                    }
                    catch (Exception ex) when(ex is InvalidOperationException || ex is CommunicationException)
                    {
                        _logger.Error(ex, "Cannot process new peer: {0}", ex.Message);
                    }
                }
            }
        }
Ejemplo n.º 12
0
 private void Pnr_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
 {
     ProgressChanged?.Invoke(e.UserState as ResolveToken, e.ProgressPercentage, new PeerNodeData <T>(e.PeerNameRecord));
 }
Ejemplo n.º 13
0
 void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
 {
     Debug.WriteLine("Progress: " + e.PeerNameRecord.PeerName);
     this.IsReady = false;
 }
Ejemplo n.º 14
0
 static void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
 {
     Console.Write("\r{0} Resolution Progress: {1}", e.PeerNameRecord.PeerName, e.ProgressPercentage);
 }