當前位置: 首頁>>代碼示例>>C#>>正文


C# AtomCollection.SetHeloPort方法代碼示例

本文整理匯總了C#中AtomCollection.SetHeloPort方法的典型用法代碼示例。如果您正苦於以下問題:C# AtomCollection.SetHeloPort方法的具體用法?C# AtomCollection.SetHeloPort怎麽用?C# AtomCollection.SetHeloPort使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在AtomCollection的用法示例。


在下文中一共展示了AtomCollection.SetHeloPort方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: SendPCPHelo

 private bool SendPCPHelo()
 {
     var helo = new AtomCollection();
       helo.SetHeloAgent(PeerCast.AgentName);
       helo.SetHeloSessionID(PeerCast.SessionID);
       if (PeerCast.IsFirewalled.HasValue) {
     if (PeerCast.IsFirewalled.Value) {
       //Do nothing
     }
     else {
       var listener = PeerCast.FindListener(
     RemoteEndPoint.Address,
     OutputStreamType.Relay | OutputStreamType.Metadata);
       helo.SetHeloPort(listener.LocalEndPoint.Port);
     }
       }
       else {
     var listener = PeerCast.FindListener(
       RemoteEndPoint.Address,
       OutputStreamType.Relay | OutputStreamType.Metadata);
     if (listener!=null) {
       helo.SetHeloPing(listener.LocalEndPoint.Port);
     }
       }
       PCPVersion.SetHeloVersion(helo);
       try {
     connection.Send(stream => {
       AtomWriter.Write(stream, new Atom(Atom.PCP_HELO, helo));
     });
       }
       catch (IOException e) {
     Logger.Info(e);
     Stop(StopReason.ConnectionError);
     return false;
       }
       return true;
 }
開發者ID:peca-dev,項目名稱:peercaststation,代碼行數:37,代碼來源:PCPSourceStream.cs

示例2: FindTracker

 public Uri FindTracker(Guid channel_id)
 {
     Logger.Debug("Finding tracker {0} from {1}", channel_id.ToString("N"), Uri);
       var host = Uri.DnsSafeHost;
       var port = Uri.Port;
       Uri res = null;
       if (port<0) port = PCPVersion.DefaultPort;
       try {
     var client = new TcpClient(host, port);
     var stream = client.GetStream();
     var request = System.Text.Encoding.UTF8.GetBytes(
       String.Format("GET /channel/{0} HTTP/1.0\r\n", channel_id.ToString("N")) +
       "x-peercast-pcp:1\r\n" +
       "\r\n");
     stream.Write(request, 0, request.Length);
     var response = ReadResponse(stream);
     var md = System.Text.RegularExpressions.Regex.Match(response, @"^HTTP/1.\d (\d+) ");
     if (md.Success) {
       var status = md.Groups[1].Value;
       switch (status) {
       case "503":
     var helo = new AtomCollection();
     helo.SetHeloAgent(PeerCast.AgentName);
     helo.SetHeloVersion(1218);
     helo.SetHeloSessionID(PeerCast.SessionID);
     helo.SetHeloPort(0);
     AtomWriter.Write(stream, new Atom(Atom.PCP_HELO, helo));
     var hosts = ReadHosts(stream, channel_id);
     res = HostToUri(hosts.FirstOrDefault(h => h.IsTracker), channel_id);
     break;
       case "200":
     //なぜかリレー可能だったのでYP自體をトラッカーとみなしてしまうことにする
     AtomWriter.Write(stream, new Atom(Atom.PCP_QUIT, Atom.PCP_ERROR_QUIT));
     res = Uri;
     break;
       default:
     //エラーだったのでトラッカーのアドレスを貰えず終了
     break;
       }
     }
     AtomWriter.Write(stream, new Atom(Atom.PCP_QUIT, Atom.PCP_ERROR_QUIT));
     client.Close();
       }
       catch (SocketException)
       {
       }
       catch (IOException)
       {
       }
       if (res!=null) {
     Logger.Debug("Tracker found: {0}", res);
       }
       else {
     Logger.Debug("Tracker no found");
       }
       return res;
 }
開發者ID:psjp,項目名稱:peercaststation,代碼行數:57,代碼來源:PCPYellowPageClient.cs

示例3: AnnounceThreadProc

 private void AnnounceThreadProc()
 {
     Logger.Debug("Thread started");
       var host = Uri.DnsSafeHost;
       var port = Uri.Port;
       if (port<0) port = PCPVersion.DefaultPort;
       while (!IsStopped) {
     int next_update = Environment.TickCount;
     posts.Clear();
     try {
       Logger.Debug("Connecting to YP");
       AnnouncingStatus = AnnouncingStatus.Connecting;
       using (var client = new TcpClient(host, port)) {
     remoteEndPoint = (IPEndPoint)client.Client.RemoteEndPoint;
     using (var stream = client.GetStream()) {
       AtomWriter.Write(stream, new Atom(new ID4("pcp\n"), (int)1));
       var helo = new AtomCollection();
       Logger.Debug("Sending Handshake");
       helo.SetHeloAgent(PeerCast.AgentName);
       helo.SetHeloVersion(1218);
       helo.SetHeloSessionID(PeerCast.SessionID);
       helo.SetHeloBCID(PeerCast.BroadcastID);
       if (PeerCast.IsFirewalled.HasValue) {
         if (PeerCast.IsFirewalled.Value) {
           //Do nothing
         }
         else {
           var listener = PeerCast.FindListener(
             ((IPEndPoint)client.Client.RemoteEndPoint).Address,
             OutputStreamType.Relay | OutputStreamType.Metadata);
           if (listener!=null) {
             helo.SetHeloPort(listener.LocalEndPoint.Port);
           }
         }
       }
       else {
         var listener = PeerCast.FindListener(
           ((IPEndPoint)client.Client.RemoteEndPoint).Address,
           OutputStreamType.Relay | OutputStreamType.Metadata);
         if (listener!=null) {
           helo.SetHeloPing(listener.LocalEndPoint.Port);
         }
       }
       AtomWriter.Write(stream, new Atom(Atom.PCP_HELO, helo));
       while (!IsStopped) {
         var atom = AtomReader.Read(stream);
         if (atom.Name==Atom.PCP_OLEH) {
           OnPCPOleh(atom);
           break;
         }
         else if (atom.Name==Atom.PCP_QUIT) {
           Logger.Debug("Handshake aborted by PCP_QUIT ({0})", atom.GetInt32());
           throw new QuitException();
         }
         if (restartEvent.WaitOne(10)) throw new RestartException();
       }
       Logger.Debug("Handshake succeeded");
       AnnouncingStatus = AnnouncingStatus.Connected;
       while (!IsStopped) {
         if (next_update-Environment.TickCount<=0) {
           Logger.Debug("Sending channel info");
           lock (announcingChannels) {
             foreach (var announcing in announcingChannels) {
               PostChannelBcst(announcing.Channel, true);
             }
           }
           next_update = Environment.TickCount+30000;
         }
         if (stream.DataAvailable) {
           Atom atom = AtomReader.Read(stream);
           ProcessAtom(atom);
         }
         lock (posts) {
           foreach (var atom in posts) {
             AtomWriter.Write(stream, atom);
           }
           posts.Clear();
         }
         if (restartEvent.WaitOne(10)) throw new RestartException();
       }
       lock (posts) {
         foreach (var atom in posts) {
           AtomWriter.Write(stream, atom);
         }
         posts.Clear();
       }
       Logger.Debug("Closing connection");
       AtomWriter.Write(stream, new Atom(Atom.PCP_QUIT, Atom.PCP_ERROR_QUIT));
     }
       }
     }
     catch (RestartException) {
       Logger.Debug("Connection retrying");
       AnnouncingStatus = AnnouncingStatus.Connecting;
     }
     catch (BannedException) {
       AnnouncingStatus = AnnouncingStatus.Error;
       Logger.Error("Your BCID is banned");
       break;
     }
//.........這裏部分代碼省略.........
開發者ID:psjp,項目名稱:peercaststation,代碼行數:101,代碼來源:PCPYellowPageClient.cs

示例4: CreatePCPHelo

 private Atom CreatePCPHelo()
 {
   var helo = new AtomCollection();
   helo.SetHeloAgent(PeerCast.AgentName);
   helo.SetHeloSessionID(PeerCast.SessionID);
   if (PeerCast.IsFirewalled.HasValue) {
     if (PeerCast.IsFirewalled.Value) {
       //Do nothing
     }
     else {
       var listener = PeerCast.FindListener(
         connection.RemoteEndPoint.Address,
         OutputStreamType.Relay | OutputStreamType.Metadata);
       helo.SetHeloPort(listener.LocalEndPoint.Port);
     }
   }
   else {
     var listener = PeerCast.FindListener(
       connection.RemoteEndPoint.Address,
       OutputStreamType.Relay | OutputStreamType.Metadata);
     if (listener!=null) {
       helo.SetHeloPing(listener.LocalEndPoint.Port);
     }
   }
   PCPVersion.SetHeloVersion(helo);
   return new Atom(Atom.PCP_HELO, helo);
 }
開發者ID:kumaryu,項目名稱:peercaststation,代碼行數:27,代碼來源:PCPSourceStream.cs


注:本文中的AtomCollection.SetHeloPort方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。