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); } }
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); } }
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 btnSearch_Click(object sender, EventArgs e) { this.richTxtSearchResult.Clear(); PeerName searchSeed = new PeerName("0." + txtSearch.Text); PeerNameResolver resolver = new PeerNameResolver(); PeerNameRecordCollection recordCollection = resolver.Resolve(searchSeed); foreach (PeerNameRecord record in recordCollection) { foreach (var endPoint in record.EndPointCollection) { if (endPoint.AddressFamily.Equals(AddressFamily.InterNetwork)) { this.richTxtSearchResult.AppendText("\n" + endPoint.ToString() + ";" + Encoding.UTF8.GetString(record.Data)); } } } }
public void ResolvePeerName(string peerId) { if (string.IsNullOrEmpty(_username)) { throw new ArgumentNullException(nameof(_username)); } System.Net.PeerToPeer.PeerNameResolver resolver = new System.Net.PeerToPeer.PeerNameResolver(); //PeerNameResolver resolvered = new PeerNameResolver(_username); var result = resolver.Resolve(new PeerName(peerId, PeerNameType.Unsecured), Cloud.AllLinkLocal); //var resulted = resolvered.ResolvePeerName //if (result.Any()) // PeerEndPointCollection = new PeerEndPointsCollection(result[0].PeerName, result[0].EndPointCollection); }
public void ResolvePeerName() { if (string.IsNullOrEmpty(_username)) { throw new ArgumentNullException(nameof(_username)); } System.Net.PeerToPeer.PeerNameResolver resolver = new System.Net.PeerToPeer.PeerNameResolver(); var result = resolver.Resolve(new PeerName(_username), Cloud.AllLinkLocal); if (result.Any()) { PeerEndPointCollection = new PeerEndPointsCollection(result[0].PeerName, result[0].EndPointCollection); } }
void Init() { StringBuilder str = new StringBuilder(); PeerName myPeer = new PeerName("MySecurePeer", PeerNameType.Secured); PeerNameResolver resolver = new PeerNameResolver(); PeerName peerName = new PeerName(classifier, PeerNameType.Secured); PeerNameRecordCollection results = resolver.Resolve(myPeer); str.AppendLine(string.Format("{0} Peers Found:", results.Count.ToString())); int i = 1; foreach (PeerNameRecord peer in results) { str.AppendLine(string.Format("{0} Peer:{1}", i++, peer.PeerName.ToString())); foreach (IPEndPoint ip in peer.EndPointCollection) { str.AppendLine(string.Format("\t Endpoint: {0}, port {1}", ip.Address.ToString(),ip.Port.ToString())); } } textBox1.Text = str.ToString(); }
// 搜索资源 private void btnSearch_Click(object sender, EventArgs e) { if (tbxSeed.Text == "") { MessageBox.Show("请先输入要寻找的种子资源名", "提示"); return; } lstViewOnlinePeer.Items.Clear(); // 初始化要搜索的资源名 PeerName searchSeed = new PeerName("0." + tbxSeed.Text); // PeerNameResolver类是将节点名解析为PeerNameRecord的值(即将通过资源名来查找资源名所在的地址,包括IP地址和端口号) // PeerNameRecord用来定于云中的各个节点 PeerNameResolver myresolver = new PeerNameResolver(); // PeerNameRecordCollection表示PeerNameRecord元素的容器 // Resolve方法是同步的完成解析 // 使用同步方法可能会出现界面“假死”现象 // 解决界面假死现象可以采用多线程或异步的方式 // 关于多线程的知识可以参考本人博客中多线程系列我前面UDP编程中有所使用 // 在这里就不列出多线程的使用了,朋友可以自己实现,如果有问题可以留言给我一起讨论 PeerNameRecordCollection recordCollection = myresolver.Resolve(searchSeed); foreach (PeerNameRecord record in recordCollection) { foreach(IPEndPoint endpoint in record.EndPointCollection) { if (endpoint.AddressFamily.Equals(AddressFamily.InterNetwork)) { ListViewItem item = new ListViewItem(); item.SubItems.Add(endpoint.ToString()); item.SubItems.Add(Encoding.UTF8.GetString(record.Data)); lstViewOnlinePeer.Items.Add(item); } } } }