示例#1
0
文件: WebHelper.cs 项目: vls/hp2p
        /// <summary>
        /// 异步上传共享文件夹
        /// </summary>
        /// <param name="targetIPEndPoint">服务器IPEndPoint</param>
        /// <param name="csIPEndPoint">Client-Side Server 监听的IPEndPoint</param>
        /*
         *<?XML version = "1.0"? />
            <Info>
            <ShareFiles>
            <File FileName="c#" Hash="888" Size="888">
            </File>
            <File FileName="C++" Hash="999" Size="999">
            </File>
            </ShareFiles>
            <Client Port="">
            </Client>
            </Info>
         *
         */
        public void UploadShareDirAsync(IPEndPoint targetIPEndPoint, IPEndPoint csIPEndPoint)
        {
            XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
            XElement info = new XElement("Info");

            XElement shareFiles = new XElement("ShareFiles");

            foreach (KeyValuePair<string, string> dict in HPPClient.HashFullNameDict)
            {
                try
                {
                    XElement file = new XElement("File");
                    FileInfo fi = new FileInfo(dict.Value);
                    file.SetAttributeValue("FileName", fi.Name);
                    file.SetAttributeValue("Hash", dict.Key);
                    file.SetAttributeValue("Size", fi.Length);

                    shareFiles.Add(file);
                }
                catch (Exception)
                {

                }

            }
            XElement client = new XElement("Client");
            client.SetAttributeValue("Port", csIPEndPoint.Port);
            info.Add(client);
            info.Add(shareFiles);
            doc.Add(info);
            string xmlStr = doc.Declaration.ToString() + doc.ToString();

            HTTPClient httpClient = new HTTPClient();
            httpClient.Encoding = Encoding.UTF8;
            string url = string.Format("http://{0}:{1}/", targetIPEndPoint.Address, targetIPEndPoint.Port);

            Uri uri = new Uri(url);
            httpClient.UploadStringAsync(uri, "POST", xmlStr);
        }