C# p2p(1)

C# p2p(1)
2012年01月17日
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Net;
  using System.Net.Sockets;
  using System.Net.PeerToPeer; namespace ConsoleApplication4
  {
  class Program
  {
  static string strMYPeername = "myApplicationName";
  static string strAllMyPeername = "";
  static int port;
  static PeerNameRegistration peernameregistration; static void Main(string[] args)
  {
  registerPeer();
  resoveName("0."+strMYPeername);
  Console.Read();
  } public static void getPort()
  {
  while (true)
  {
  port = new Random().Next(50000,51000);
  try
  {
  TcpListener listener = new TcpListener(IPAddress.Any, port);
  listener.Start();
  }
  catch
  {
  continue;
  }
  break;
  }
  } //把PNRP NAME 注册到Cloud中
  public static void registerPeer()
  {
  getPort();//获取要连线的IP&PORT
  PeerName peername = new PeerName(strMYPeername, PeerNameType.Unsecured);
  //用peername创建注册群,然后把peername注册到群中
  peernameregistration = new PeerNameRegistration(peername, port);
  peernameregistration.Comment = "pnrp peer name 的其他描述信息";
  peernameregistration.Data = Encoding.UTF8.GetBytes(string.Format("注册时间{0}",DateTime.Now.ToString()));
  strAllMyPeername = peername.ToString();
  peernameregistration.Start();
  }
  public static void resolverPeer(string myPeername)
  {
  PeerName peerName = new PeerName("0." + myPeername);
  PeerNameResolver resolver = new PeerNameResolver();
  PeerNameRecordCollection pmrcs = resolver.Resolve(peerName);
  foreach (PeerNameRecord pmrc in pmrcs)
  {
  foreach (IPEndPoint endpoint in pmrc.EndPointCollection)
  {
  Console.WriteLine(endpoint);
  }
  }
  }
  ///解析对等名称
  public static void resoveName(string strPeerName)
  {
  PeerName mypeer = new PeerName(strPeerName);
  PeerNameResolver myRes = new PeerNameResolver();
  PeerNameRecordCollection recColl = myRes.Resolve(mypeer);
  foreach (var record in recColl)
  {
  foreach (var endp in record.EndPointCollection)
  {
  if (endp.AddressFamily.Equals(AddressFamily.InterNetw ork))
  {
  Console.WriteLine(record.PeerName.ToString());
  Console.WriteLine(endp.ToString());
  Console.WriteLine(Encoding.UTF8.GetString(record.D ata));
  Console.WriteLine(record.PeerName.PeerHostName);
  }
  }
  }
  }
  }
  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值