private void btnResolve_Click(object sender, RoutedEventArgs e) { if (txtPeerName.Text.Length > 0) { // 建立PeerName物件 PeerName peerName = new PeerName(txtPeerName.Text); // 建立PeerNameResolver物件 PeerNameResolver resolver = new PeerNameResolver(); // 宣告非同步解析作業正在執行中所觸發之事件 // 並定義所呼叫的方法為ResolveProgressChangedCallback resolver.ResolveProgressChanged += new EventHandler <ResolveProgressChangedEventArgs>(ResolveProgressChangedCallback); // 宣告非同步解析作業完成時所觸發之事件 // 並定義所呼叫的方法為ResolveCompletedCallback resolver.ResolveCompleted += new EventHandler <ResolveCompletedEventArgs>(ResolveCompletedCallback); lstPeerNameRecord.Items.Clear(); progressBar.Visibility = Visibility.Visible; // 非同步將PNRP Peer Name解析為PNRP Peer Name記錄物件 resolver.ResolveAsync(peerName, 1); } else { MessageBox.Show("Please enter Peer Name.", "Peer Name Resolver", MessageBoxButton.OK, MessageBoxImage.Error); } }
public List <NetworkHost> Find(string name) { if (type != NetworkTypes.Client) { throw new Exception("Only allowed for client!"); } var hosts = new List <NetworkHost>(); peerNameResolver = new PeerNameResolver(); peerName = new PeerName(name, PeerNameType.Unsecured); var results = peerNameResolver.Resolve(peerName); foreach (var record in results) { var host = new NetworkHost(record.Comment); foreach (var endpoint in record.EndPointCollection) { if (endpoint.AddressFamily == AddressFamily.InterNetwork) { Console.WriteLine(string.Format("Found EndPoint {0}:{1}", endpoint.Address, endpoint.Port)); host.endpoints.Add(endpoint); } } if (host.endpoints.Count != 0) { hosts.Add(host); } } return(hosts); }
public List <PeerInfo> ResolveByPeerHostName(string peerHostName) { try { if (string.IsNullOrEmpty(peerHostName)) { throw new ArgumentException("Cannot have a null or empty host peer name."); } PeerNameResolver resolver = new PeerNameResolver(); List <PeerInfo> foundPeers = new List <PeerInfo>(); var resolvedName = resolver.Resolve(new PeerName(peerHostName, PeerNameType.Unsecured), Cloud.AllLinkLocal); foreach (var foundItem in resolvedName) { foreach (var endPointInfo in foundItem.EndPointCollection) { PeerInfo peerInfo = new PeerInfo(foundItem.PeerName.PeerHostName, foundItem.PeerName.Classifier, endPointInfo.Port); peerInfo.Comment = foundItem.Comment; foundPeers.Add(peerInfo); } } return(foundPeers); } catch (PeerToPeerException px) { throw new Exception(px.InnerException.Message); } }
private void Run() { Console.WriteLine("Hello! Enter Your Username:"); string username = Console.ReadLine(); Peer <IPingService> peer = new Peer <IPingService> { PeerID = Guid.NewGuid().ToString().Split('-')[4], Username = username }; IPeerRegistrationRepository peerRegistration = new PeerRegistrationManager(); IPeerNameResolverRepository peerNameResolver = new PeerNameResolver(peer.PeerID); IPeerConfigurationService <PingService> peerConfigurationService = new PeerConfigurationService(peer); PeerServiceHost psh = new PeerServiceHost(peerRegistration, peerNameResolver, peerConfigurationService); Thread thd = new Thread(() => { psh.RunPeerServiceHost(peer); }) { IsBackground = true }; thd.Start(); Console.ReadLine(); }
public void StartResolving() { Thread th = new Thread(() => { while (true) { List <IPEndPoint> res = new List <IPEndPoint>(); PeerNameResolver resolver = new PeerNameResolver(); PeerNameRecordCollection results = resolver.Resolve(peerName, Cloud.AllLinkLocal); foreach (var peer in results) { foreach (var item in peer.EndPointCollection) { if (item.AddressFamily == AddressFamily.InterNetwork) { res.Add(item); break; } } } lock (resolverLock) { peers = res; } Thread.Sleep(10000); } }); th.Start(); }
static void Main(string[] args) { Console.Write("Peer Classifier to Resolve: "); string classifier = Console.ReadLine(); PeerNameResolver resolver = new PeerNameResolver(); Console.Write("Please wait. Resolving..."); try { //records = resolver.Resolve(new PeerName(classifier, PeerNameType.Unsecured)); //DisplayResults(); resolver.ResolveCompleted += new EventHandler <ResolveCompletedEventArgs>(resolver_ResolveCompleted); resolver.ResolveProgressChanged += new EventHandler <ResolveProgressChangedEventArgs>(resolver_ResolveProgressChanged); resolver.ResolveAsync(new PeerName(classifier, PeerNameType.Unsecured), Guid.NewGuid()); while (isRunning) { Thread.Sleep(1000); //Console.Write("."); } } catch (PeerToPeerException ex) { Console.WriteLine("PeerToPeer Exception: {0}", ex.Message); } Console.WriteLine(); Console.WriteLine("Press Enter to Exit..."); Console.ReadLine(); }
private void btnResolve_Click(object sender, RoutedEventArgs e) { if (txtPeerName.Text.Length > 0) { // 建立PeerName物件 PeerName peerName = new PeerName(txtPeerName.Text); // 建立PeerNameResolver物件 PeerNameResolver resolver = new PeerNameResolver(); // 將PNRP Peer Name解析為PNRP Peer Name記錄物件 PeerNameRecordCollection pmrcs = resolver.Resolve(peerName); if (pmrcs.Count > 0) { lstPeerNameRecord.Items.Clear(); } else { MessageBox.Show("No Peer Name Record Found", "Peer Name Resolver", MessageBoxButton.OK, MessageBoxImage.Error); } foreach (PeerNameRecord pmrc in pmrcs) { foreach (IPEndPoint endpoint in pmrc.EndPointCollection) { lstPeerNameRecord.Items.Add(endpoint); } } } else { MessageBox.Show("Please enter Peer Name.", "Peer Name Resolver", MessageBoxButton.OK, MessageBoxImage.Error); } }
public List <Peer> ResolveByPeerName(string peerName) { try { if (string.IsNullOrEmpty(peerName)) { throw new ArgumentException("Cannot have a null or empty peer name."); } PeerNameResolver resolver = new PeerNameResolver(); PeerNameRecordCollection resolvedName = resolver.Resolve(new PeerName(peerName, PeerNameType.Unsecured), Cloud.AllLinkLocal); List <Peer> foundPeers = new List <Peer>(); foreach (PeerNameRecord foundItem in resolvedName) { Peer peer = new Peer() { PeerName = foundItem.PeerName.Classifier, PeerHostName = foundItem.PeerName.PeerHostName, Comments = foundItem.Comment }; foundPeers.Add(peer); } return(foundPeers); } catch (PeerToPeerException px) { throw new Exception(px.InnerException.Message); } }
static void Main(string[] args) { try { if (args.Length != 1) { Console.WriteLine("Usage: PeerNameResolver.exe <PeerNameToResolve>"); return; } // create a resolver object to resolve a Peer Name that was previously published PeerNameResolver resolver = new PeerNameResolver(); // The Peer Name to resolve must be passed as the first command line argument to the application PeerName peerName = new PeerName(args[0]); // resolve the Peer Name - this is a network operation and will block until the resolve completes PeerNameRecordCollection results = resolver.Resolve(peerName); // Display the data returned by the resolve operation Console.WriteLine("Resolve operation complete.\n", peerName); Console.WriteLine("Results for PeerName: {0}", peerName); Console.WriteLine(); int count = 1; foreach (PeerNameRecord record in results) { Console.WriteLine("Record #{0} results...", count); Console.Write("Comment:"); if (record.Comment != null) { Console.Write(record.Comment); } Console.WriteLine(); Console.Write("Data:"); if (record.Data != null) { //Assumes the data blob associated with the PeerName is made up of ASCII characters Console.Write(System.Text.Encoding.ASCII.GetString(record.Data)); } Console.WriteLine(); Console.WriteLine("Endpoints:"); foreach (IPEndPoint endpoint in record.EndPointCollection) { Console.WriteLine("\t Endpoint:{0}", endpoint); Console.WriteLine(); } count++; } Console.ReadKey(); } catch (Exception e) { Console.WriteLine("Error occured while attempting to resolve the PeerName: {0}", e.Message); Console.WriteLine(e.StackTrace); } }
private static PeerNameRecordCollection Resolve(string serviceName) { var resolver = new PeerNameResolver(); var peerName = new PeerName(serviceName, PeerNameType.Unsecured); return(resolver.Resolve(peerName)); }
public PnrpManager() { _resolver = new PeerNameResolver(); InitializeRegistrations(); InitializeClouds(); this.CurrentScope = PnrpScope.All; }
public PeerNameResolver ResolvePeerName(PeerName peerName) { var peerNameResolver = new PeerNameResolver(); peerNameResolver.ResolveCompleted += peerNameResolver_ResolveCompleted; peerNameResolver.ResolveAsync(peerName, Guid.NewGuid()); return(peerNameResolver); }
private void InitPeerResolver() { _peerResolver = new PeerNameResolver(); _peerResolver.ResolveProgressChanged += OnPeerResolverFound; _peerResolver.ResolveCompleted += OnPeerResolveComplete; _logger.Debug("Peer resolver is inited"); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="cloud">対象となるネットワーク</param> /// <param name="peerName">登録ピア名</param> public Resolver(Cloud cloud, PeerName peerName) { this.cloud = cloud; this.peerName = peerName; peerNameResolver = new PeerNameResolver(); peerNameResolver.ResolveProgressChanged += Pnr_ResolveProgressChanged; peerNameResolver.ResolveCompleted += Pnr_ResolveCompleted; }
private PeersResolver() { _resolver = new PeerNameResolver(); _resolver.ResolveProgressChanged += resolver_ResolveProgressChanged; _resolver.ResolveCompleted += resolver_ResolveCompleted; _peerList = new List <Peer>(); _callbacks = new List <Constants.VoidCallback>(); }
internal void Resolve2() { Logger.Log.Info("Start P2P resolver..."); // create a resolver object to resolve a peername resolver = new PeerNameResolver(); string endpointUrl = null; // resolve the PeerName - this is a network operation and will block until the resolve completes //PeerNameRecordCollection results = resolver.Resolve(peerName, 100); // Max 100 records PeerNameRecordCollection results = resolver.Resolve(peerName, Cloud.Available, 100); // Max 100 records foreach (PeerNameRecord record in results) { foreach (IPEndPoint ep in record.EndPointCollection) { if (ep.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { endpointUrl = string.Format(endpointuriformat4, ep.Address, ep.Port); } else if (ep.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) //if ((ep.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) && !ep.Address.IsIPv6LinkLocal) { endpointUrl = string.Format(endpointuriformat6, ep.Address, ep.Port); } try { NetTcpBinding binding = Helper.GetStreamBinding(); IP2PService serviceProxy = ChannelFactory <IP2PService> .CreateChannel( binding, new EndpointAddress(endpointUrl)); PeerEntry peer = new PeerEntry(); peer.PeerName = record.PeerName; peer.ServiceProxy = serviceProxy; peer.DisplayString = serviceProxy.GetName(); if (record.Comment != null) { peer.Comment = record.Comment; } if (record.Data != null) { peer.Data = System.Text.Encoding.ASCII.GetString(record.Data); } Logger.Log.Info(string.Format("SUCCESS Connect:{0} \t\t {1} ", endpointUrl, peer.Comment)); Vault.Peers.Add(peer); } catch (EndpointNotFoundException e) { Logger.Log.Debug(e.Message); } } } }
public void FindPeers() { // Создание распознавателя и добавление обработчиков событий PeerNameResolver resolver = new PeerNameResolver(); resolver.ResolveProgressChanged += resolver_ResolveProgressChanged; resolver.ResolveCompleted += resolver_ResolveCompleted; // Преобразование незащищенных имен пиров асинхронным образом resolver.ResolveAsync(new PeerName("0.P2P Sample"), 1); }
/// <summary> /// 解析对等名称 /// </summary> /// <param name="myPeerName"></param> public static PeerNameRecordCollection ResolverPeer(String myPeerName) { Thread.Sleep(500); strPeerInfos.Clear(); // 建立PeerName实例 PeerName peerName = new PeerName("0." + myPeerName); // 建立PeerNameResolver实例 PeerNameResolver resolver = new PeerNameResolver(); // 对PNRP Peer Name进行解析 PeerNameRecordCollection pmrcs = resolver.Resolve(peerName); return(pmrcs); }
internal void Refresh() { // Создание распознавателя и добавление обработчиков событий var resolver = new PeerNameResolver(); resolver.ResolveProgressChanged += ResolveProgressChanged; resolver.ResolveCompleted += ResolveCompleted; // Подготовка к добавлению новых пиров _home.ListPeerEntryClear(); _home.SetRefreshMenuEnabled(false); // Преобразование защищенных имен пиров асинхронным образом resolver.ResolveAsync(new PeerName("P2P Sample", PeerNameType.Secured), _home.DlgSetting.Id); }
private void RefreshButton_Click(object sender, RoutedEventArgs e) { // Create resolver and add event handlers PeerNameResolver resolver = new PeerNameResolver(); resolver.ResolveProgressChanged += new EventHandler <ResolveProgressChangedEventArgs>(resolver_ResolveProgressChanged); resolver.ResolveCompleted += new EventHandler <ResolveCompletedEventArgs>(resolver_ResolveCompleted); // Prepare for new peers PeerList.Items.Clear(); RefreshButton.IsEnabled = false; // Resolve unsecured peers asynchronously resolver.ResolveAsync(new PeerName("0.P2P Sample"), 1); }
public void LookupRegistrationAsync(PeerName peerName, EventHandler <ResolveProgressChangedEventArgs> progressChanged, EventHandler <ResolveCompletedEventArgs> completed) { if (peerName == null) { throw new ArgumentException("Cannot have null PeerName"); } _resolver = new PeerNameResolver(); _resolver.ResolveCompleted += new EventHandler <ResolveCompletedEventArgs>(completed); _resolver.ResolveProgressChanged += new EventHandler <ResolveProgressChangedEventArgs>(progressChanged); Debug.WriteLine(string.Format("Resolving: {0}", peerName.ToString())); _resolver.ResolveAsync(peerName, peerName); }
private void RefreshButton_Click(object sender, RoutedEventArgs e) { // create recognizers and event handlers PeerNameResolver resolver = new PeerNameResolver(); resolver.ResolveProgressChanged += resolver_ResolveProgressChanged; resolver.ResolveCompleted += resolver_ResolveCompleted; PeerList.Items.Clear(); RefreshButton.IsEnabled = false; // parse names async resolver.ResolveAsync(new PeerName("0.P2P Sample"), 1); }
private void RefreshButton_Click(object sender, RoutedEventArgs e) { // Создание распознавателя и добавление обработчиков событий PeerNameResolver resolver = new PeerNameResolver(); resolver.ResolveProgressChanged += new EventHandler <ResolveProgressChangedEventArgs>(resolver_ResolveProgressChanged); resolver.ResolveCompleted += new EventHandler <ResolveCompletedEventArgs>(resolver_ResolveCompleted); // Подготовка к добавлению новых пиров PeerList.Items.Clear(); RefreshButton.IsEnabled = false; // Преобразование незащищенных имен пиров асинхронным образом resolver.ResolveAsync(new PeerName("0.P2P Sample"), 1); }
public void ResolveAsync() { // Create resolver. resolver = new PeerNameResolver(); resolver.ResolveProgressChanged += new EventHandler <ResolveProgressChangedEventArgs>(resolver_ResolveProgressChanged); resolver.ResolveCompleted += new EventHandler <ResolveCompletedEventArgs>(resolver_ResolveCompleted); // Prepare for new peer adding Vault.Peers.Clear(); // Solve peer names async //resolver.ResolveAsync(new PeerName("0.P2P Sample"), 1); //PeerName peername = new PeerName(Application.ProductName, PeerNameType.Unsecured); resolver.ResolveAsync(peerName, Cloud.Available); }
public void RefreshPeers() { // Создание распознавателя и добавление обработчиков событий PeerNameResolver resolver = new PeerNameResolver(); resolver.ResolveProgressChanged += new EventHandler <ResolveProgressChangedEventArgs>(resolver_ResolveProgressChanged); resolver.ResolveCompleted += new EventHandler <ResolveCompletedEventArgs>(resolver_ResolveCompleted); // Подготовка к добавлению новых пиров PeerList.Clear(); CanRefreshPeers = false; // Преобразование незащищенных имен пиров асинхронным образом resolver.ResolveAsync(new PeerName("0.P2P Sample"), 1); }
/// <summary> /// 解析对等名称 /// </summary> /// <param name="myPeerName"></param> public static void ResolverPeer(String myPeerName) { // 建立PeerName实例 PeerName peerName = new PeerName("0." + myPeerName); // 建立PeerNameResolver实例 PeerNameResolver resolver = new PeerNameResolver(); // 对PNRP Peer Name进行解析 PeerNameRecordCollection pmrcs = resolver.Resolve(peerName); foreach (PeerNameRecord pmrc in pmrcs) { foreach (IPEndPoint endpoint in pmrc.EndPointCollection) { Console.WriteLine(endpoint); } } }
public PeerNameRecordCollection getPeerNameRecords(string classifier) { PeerNameRecordCollection peers = null; PeerNameResolver resolver = new PeerNameResolver(); Console.WriteLine("Please wait, Resolving..."); try { peers = resolver.Resolve(new PeerName(classifier, PeerNameType.Unsecured)); } catch (PeerToPeerException ex) { Console.WriteLine("PeerToPeer Exception: {0}", ex.Message); } return(peers); }
public PeerNameResult ResolveHostName(string hostPeerName) { if (string.IsNullOrEmpty(hostPeerName)) { throw new ArgumentException("Cannot have a null or empty host peer name."); } PeerNameResolver resolver = new PeerNameResolver(); var results = resolver.Resolve(new PeerName(hostPeerName, PeerNameType.Unsecured), Cloud.Global); if (results == null || results.Count == 0) { throw new PeerToPeerException(string.Format("Unable to resolve {0}", hostPeerName)); } return(new PeerNameResult(results[0].PeerName.PeerHostName, results[0].EndPointCollection[0].Port)); }
private void Run() { Peer <IPingService> peer = new Peer <IPingService> { UserName = Guid.NewGuid().ToString().Split('-')[4] }; IPeerRegistrationRepository peerRegistration = new PeerRegistrationManager(); IPeerNameResolverRepository peerNameResolver = new PeerNameResolver(peer.UserName); IPeerConfigurationService peerConfigurationService = new PeerConfigurationService(peer); peerRegistration.StartPeerRegistration(peer.UserName, peerConfigurationService.Port); Console.WriteLine("Peer Information . . . ."); Console.WriteLine($"Peer Uri: {peerRegistration.PeerUri} \t\t Port: {peerConfigurationService.Port}"); var host = Dns.GetHostEntry(peerRegistration.PeerUri); host.AddressList?.ToList().ForEach(p => Console.WriteLine($"\t\t IP :{p}")); Console.ReadLine(); }
static void Main(string[] args) { // create a resolver object to resolve a peername PeerNameResolver resolver = new PeerNameResolver(); // the peername to resolve must be passed as the first command line argument to the application PeerName peerName = new PeerName("3df33a18134282a04f56b887633e5a6640b7682e.RowansWebServer"); // resolve the PeerName - this is a network operation and will block until the resolve completes PeerNameRecordCollection results = resolver.Resolve(peerName); // Display the data returned by the resolve operation Console.WriteLine("Results for PeerName: {0}", peerName); Console.WriteLine(); int count = 1; foreach (PeerNameRecord record in results) { Console.WriteLine("Record #{0} results...", count); Console.Write("Comment:"); if (record.Comment != null) { Console.Write(record.Comment); } Console.WriteLine(); Console.Write("Data:"); if (record.Data != null) { Console.Write(System.Text.Encoding.ASCII.GetString(record.Data)); } Console.WriteLine(); Console.WriteLine("Endpoints:"); foreach (IPEndPoint endpoint in record.EndPointCollection) { Console.WriteLine("\t Endpoint:{0}", endpoint); Console.WriteLine(); } count++; } Console.ReadKey(); }