コード例 #1
0
 public CServerSearchResults(MemoryStream buffer, CSearcher search, bool esUDP)
 {
     BinaryReader reader = new BinaryReader(buffer);
     if (!esUDP)
     {
         uint nResultados = reader.ReadUInt32();
         for (uint i = 0; i < nResultados; i++)
         {
             m_ExtractResult(reader, search);
         }
         search.OnTCPSearchEnded();
     }
     else
     {
         m_ExtractResult(reader, search);
         while ((reader.PeekChar() != 0) && (reader.PeekChar() != -1))
         {
             Debug.WriteLine("MoreUDP results in one packet");
             if ((Protocol.ProtocolType)reader.ReadByte() != Protocol.ProtocolType.eDonkey) break;
             if ((reader.PeekChar() == -1) || (reader.ReadByte() != (byte)Protocol.ServerCommandUDP.GlobalSearchResult))
                 break;
             m_ExtractResult(reader, search);
         }
     }
     reader.Close();
     buffer.Close();
     reader = null;
     buffer = null;
 }
コード例 #2
0
 private uint m_ExtractResult(BinaryReader reader, CSearcher search)
 {
     CParameterReader parameterReader;
     byte[] HashEncontrado = reader.ReadBytes(16);
     uint ip = reader.ReadUInt32();
     ushort port = reader.ReadUInt16();
     uint nParametros = reader.ReadUInt32();
     string fileName = "?";
     uint fileSize = 0;
     uint nSources = 1;
     string codec = "";
     uint bitrate = 0;
     string length = "";
     bool complete = false;
     for (uint param = 0; param != nParametros; param++)
     {
         parameterReader = new CParameterReader(reader);
         switch ((Protocol.FileTag)parameterReader.id)
         {
             case Protocol.FileTag.Name:
                 fileName = parameterReader.valorString;
                 break;
             case Protocol.FileTag.Size:
                 fileSize = parameterReader.valorNum;
                 break;
             case Protocol.FileTag.Sources:
                 nSources = parameterReader.valorNum;
                 break;
             case Protocol.FileTag.Completed:
                 complete = parameterReader.valorNum > 0;
                 break;
             default:
                 if (parameterReader.nombreParam == Protocol.FileExtraTags.codec.ToString())
                     codec = parameterReader.valorString;
                 else if (parameterReader.nombreParam == Protocol.FileExtraTags.length.ToString())
                     length = parameterReader.valorString;
                 else if (parameterReader.nombreParam == Protocol.FileExtraTags.bitrate.ToString())
                     bitrate = parameterReader.valorNum;
                 //Debug.WriteLine(parameterReader.id+" name: "+parameterReader.nombreParam+" valString:"+parameterReader.valorString+" valNum: "+parameterReader.valorNum);
                 break;
         }
     }
     if (fileSize < Protocol.PartSize) complete = true;
     search.AddFileFound(HashEncontrado, fileName, fileSize, nSources, codec, length, bitrate, complete, ip, port);
     return nSources;
 }