Example #1
0
File: SSServer.cs Project: vls/hp2p
        public void TestGetFileInfo()
        {
            FileInfomations fileinfo = new FileInfomations();
            List<IPEndPoint> ipepList = new List<IPEndPoint>();
            fileinfo.IPEndPointList = ipepList;
            fileinfo.BlockNumber = 88;
            fileinfo.LastBlockSize = 12365;
            fileinfo.Size = 886459;
            fileinfo.IPEndPointList.Add(new IPEndPoint(IPAddress.Parse("192.168.0.88"),5555));
            fileinfo.IPEndPointList.Add(new IPEndPoint(IPAddress.Parse("192.168.0.99"), 6666));
            fileinfo.IPEndPointList.Add(new IPEndPoint(IPAddress.Parse("192.168.1.99"), 3333));
            hashUser.Add("123",fileinfo);
            string ret = GetFileInfomation((string) urlInfo["Hash"]);
            Console.WriteLine(ret);
            Console.WriteLine();
            XDocument doc = new XDocument();
            try
            {
                doc = XDocument.Parse(ret);
                //TextReader tr = new StringReader(ret); ;
                //doc = XDocument.Load(tr);
            }
            catch (Exception)
            {

                Console.WriteLine("body数据不符合xml格式!fuckfukcukfjkc");
            }
            Console.WriteLine(doc.Declaration.ToString());
            Console.WriteLine(doc.ToString());
               // Console.WriteLine(GetFileInfomation((string)urlInfo["Hash"]));
        }
Example #2
0
File: SSServer.cs Project: vls/hp2p
        /// <summary>
        /// 保存用户的共享文件等信息
        /// </summary>
        /// <param name="data">一个xml格式的string</param>
        /// <param name="remoteEndPoint">用户的IPEndPoint</param>
        protected void SaveUserFilesInfo(string data,EndPoint remoteEndPoint)
        {
            XDocument doc = new XDocument();
            IPEndPoint ipEndPoint = null;
            try
            {
                ipEndPoint = (IPEndPoint) remoteEndPoint;

            }
            catch (Exception)
            {

                Console.WriteLine("remoteEndPoint有错");
            }

            try
            {
                TextReader tr = new StringReader(data);;
                doc = XDocument.Load(tr);
            }
            catch (Exception e)
            {

                Console.WriteLine("body数据不符合xml格式!");
            }
            try
            {
                //没有共享文件时返回
                if (doc.Descendants("File").Count() == 0)
                {
                   // Console.WriteLine("没有共享文件");
                    return;

                }
                var files = from f in doc.Descendants("File")
                     select new { fileName = f.Attribute("FileName").Value, hash = f.Attribute("Hash").Value,fileSize =f.Attribute("Size") };
                foreach (var file in files)
                {
                    if (!fileNameHash.ContainsKey(file.fileName))
                    {
                        fileNameHash.Add(file.fileName,file.hash);
                    }
                    if (!hashUser.ContainsKey(file.hash))
                    {
                        List<IPEndPoint>userList = new List<IPEndPoint>();
                        FileInfomations fileinfos = new FileInfomations();
                        userList.Add(ipEndPoint);
                        fileinfos.IPEndPointList = userList;
                        long size = (long)file.fileSize;
                        fileinfos.Size = (long)file.fileSize;
                        if (size % BLOCKSIZE == 0)
                        {
                            fileinfos.BlockNumber = (int)size/BLOCKSIZE;
                            fileinfos.LastBlockSize = BLOCKSIZE;
                        }
                        else
                        {
                            fileinfos.BlockNumber = (int) size/BLOCKSIZE + 1;
                            fileinfos.LastBlockSize = (int) size%BLOCKSIZE;
                        }
                        hashUser.Add(file.hash,fileinfos);
                    }
                    else
                    {
                        hashUser[file.hash].IPEndPointList.Add(ipEndPoint);
                    }
                }
            }
            catch (Exception)
            {

                Console.WriteLine("保共享文件信息时出错!");
            }
        }