精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C# WebService更新客戶端軟件

開發 后端
本文主要先從思路、細節、技術講解使用C# WebService實現客戶端軟件的更新應用,作者結合簡明的代碼實例,詳細分析了客戶端軟件遠程更新的思路。

先實現 WEB端的開發,主要考慮使用WEBService技術,提供遠程服務的調用函數 。由于項目原因,要實施的客戶離作者太遠,考慮提供軟件的在線升級功能.我們C# WebService來實現。先講下思路.

思路:

先實現 WEB端的開發,主要考慮使用C# WebService技術,提供遠程服務的調用函數,返回一個文件的字節內容,然后寫一個升級程序客戶端,分發給客戶使用的機器中,(可以隨客戶的軟件一起安裝).該客戶端程序主要連接webserivce,然后將文件保存到本地機(客戶的機器)中.就可以實現!

實現的細節:

要考慮提供給客戶軟件版本問題,低版本的升級,***版本的就不用升級.還要考慮用戶名與密碼在WEB端的認證!

使用技術:

ASP.Net WebService開發,客戶端的異步調用WebService方法.數據庫技術!

開始實現:

  1. 1.建立數據庫,使用SQLSERVER2000  
  2. 1)軟件項目表:softlist(softid, softname,   
  3. resume, loginname, loginpwd)  
  4. softid:編號  
  5. softname:軟件名稱  
  6. resume:介紹  
  7. loginname:客戶登錄名  
  8. loginpwd:密碼  
  9.  
  10.  
  11. 2)各個軟件的版本表 SoftListVersion(softid, subid,   
  12. version, UpdatePath, olefile)  
  13. softid:主表的軟件編號  
  14. subid:各版本數據編號  
  15. version:軟件版本  
  16. filename:升級文件名  
  17. olefile:升級文件的二進制內容,是image類型,  
  18. (我主要存放MSI的安裝包文件類型,可以使用C#做此類安裝包文件)  
  19.  
  20. 3)建立一個視圖,chkVersion,用于檢查版本號  
  21. SELECT dbo.SoftListVersion.subid, dbo.softlist.  
  22. softname, dbo.SoftListVersion.version  
  23. FROM dbo.softlist INNER JOIN 
  24. dbo.SoftListVersion ON dbo.softlist.softid =   
  25. dbo.SoftListVersion.softid  
  26.  
  27. 4)再建立一個視圖,vOleFile,用于下載文件  
  28. SELECT dbo.SoftListVersion.subid, dbo.softlist.  
  29. softname, dbo.SoftListVersion.filename,  
  30. dbo.SoftListVersion.olefile, dbo.SoftListVersion.version  
  31. FROM dbo.softlist INNER JOIN 
  32. dbo.SoftListVersion ON dbo.softlist.softid =   
  33. dbo.SoftListVersion.softid  
  34.  
  35. 2.寫一個WEBSERVICE  
  36. 1)啟動VS.Net2003,建立一個叫babyWebSvc的項目,  
  37. 項目類型為(ASP.Net WEB服務)  
  38. 2)添加一個SoftUpdate.asmx的WEB服務  
  39.  
  40. 3)添加一個方法SearchVersion  
  41.  
  42. [WebMethod(Description=”  
  43. 返回當前軟件升級包的***版本”)]  
  44. public string SearchVersion(string softname)  
  45. {  
  46. string sVersion = ””;  
  47. webmod.dbConnStart(); //  
  48. (連接)作者自己的連接數據庫類,用戶自己完成數據庫連接  
  49. string strSQL = ”select MAX(version) as   
  50. MaxVerID from chkVersion where softname = @softname”;  
  51. SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);  
  52. sqlCmd.CommandTimeout = 0;  
  53. sqlCmd.Parameters.Add(”@softname”,SqlDbType.VarChar).  
  54. Value = softname;  
  55. SqlDataReader sqlRd = sqlCmd.ExecuteReader();  
  56. if(sqlRd.HasRows)  
  57. {  
  58. sqlRd.Read();  
  59. sVersion = Convert.ToString(sqlRd[”MaxVerID”]);  
  60. }  
  61. sqlRd.Close();  
  62.  
  63. webmod.dbConnEnd(); //(斷開連接)作者自己的連接數據庫類,  
  64. 用戶自己完成數據庫連接  
  65.  
  66. return sVersion;  
  67. }  
  68.  
  69. 4)添加下載文件內容的方法DownloadSoft  
  70.  
  71. [WebMethod(Description=”返回需要下載的文件字節”)]  
  72. public byte[] DownloadSoft(string UserName,string PassWord,  
  73. string SoftDnldName,string SoftHeightVersion)  
  74. {  
  75. //(連接)作者自己的連接數據庫類,用戶自己完成數據庫連接  
  76. webmod.dbConnStart();  
  77.  
  78. //檢查用戶合法性  
  79. bool bMember = CheckAuth(UserName,PassWord);  
  80. //該WebService內的一個檢查用戶合法性的函數,用戶可以自己完成  
  81. if(!bMember)  
  82. {  
  83. webmod.dbConnEnd();  
  84. return null;  
  85. }  
  86. byte[] b = null;  
  87.  
  88. //我們取出指定軟件名稱的***版本的升級包  
  89. string strSQL = ”select olefile from vOleFile where   
  90. (filename=@softname) and version=@ver”;  
  91. SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);  
  92. sqlCmd.CommandTimeout = 0;  
  93. sqlCmd.Parameters.Add(”@softname”,SqlDbType.VarChar).  
  94. Value = SoftDnldName;  
  95. sqlCmd.Parameters.Add(”@ver”, SqlDbType.VarChar).  
  96. Value = SoftHeightVersion;  
  97. SqlDataReader sqlRd = sqlCmd.ExecuteReader();  
  98. if(sqlRd.HasRows)  
  99. {  
  100. sqlRd.Read();  
  101. b = (byte[])sqlRd[”olefile”];//文件的字節內容  
  102. }  
  103. sqlRd.Close();  
  104.  
  105. //(斷開連接)作者自己的連接數據庫類,用戶自己完成數據庫連接  
  106. webmod.dbConnEnd();  
  107. return b;  
  108. }  

3.WEB服務的方法完成后,你自己可以啟動,測試,我們現在來寫客戶端的升級程序,假定你在開發時的WEBSERVICE的URL為:http://localhost/babywebsvc/SoftUpdate.asmx,注意這個URL,我們是要在客戶端引用的

4.啟動VS.Net2003,建立一個C#的Windows項目,在默認的FORM上添加一個按鈕,

5.添加一個新的文件類型(應用程序配置文件)App.config

App.Config文件的內容

  1. 〈?xml version=”1.0” encoding=”utf-8”?〉  
  2. 〈configuration〉  
  3. 〈appSettings〉  
  4. add key=”user” value=”test”/〉  
  5. add key=”pwd” value=”test”/〉  
  6. add key=”babyRecordSoftName” value=”  
  7. TEST.EXE”/〉〈!--記錄在遠程的數據庫中的軟件名稱--〉  
  8. add key=”Version” value=”1.0”/〉  
  9. 〈/appSettings〉  
  10. 〈/configuration〉 

6.我們在Form啟動的LOAD事件中,添加如下代碼

  1. private void Form1_Load(object sender,   
  2. System.EventArgs e)  
  3. {  
  4. //讀出版本號,該版本號是在AssemblyInfo.cs  
  5. 中由系統本身設置的,[assembly: AssemblyVersion(”1.0”)]  
  6. //以后要更改,可以改此處的AssemblyInfo.cs中的版本號,  
  7. 例:[assembly: AssemblyVersion(”1.1”)]  
  8. //我們的WEBSERVICE中需要這個數據做為參數  
  9. string sVersion = Application.ProductVersion;  
  10.  
  11. //寫到App.Cofing文件中,每次調用WEBSERVICE方法時,  
  12. 從App.Cofing中讀取版本,你也可以直接使用Application.  
  13. ProductVersion,我是為了統一管理,全部從config中讀取  
  14. this.SaveAppConfig(”Version”,sVersion);  
  15. }  
  16.  
  17. //SaveAppConfig函數的內容  
  18. public static void SaveAppConfig  
  19. (string AppKey,string AppValue)  
  20. {  
  21. XmlDocument xDoc = new XmlDocument();  
  22. xDoc.Load(Application.ExecutablePath + ”.config”);  
  23.  
  24. XmlNode xNode;  
  25. XmlElement xElem1;  
  26. XmlElement xElem2;  
  27.  
  28. xNode = xDoc.SelectSingleNode(”//appSettings”);  
  29.  
  30. xElem1 = (XmlElement)xNode.SelectSingleNode(  
  31. ”//add[@key=” + AppKey + ”]”);  
  32. if ( xElem1 != null ) xElem1.SetAttribute(”  
  33. value”,AppValue);  
  34. else 
  35. {  
  36. xElem2 = xDoc.CreateElement(”add”);  
  37. xElem2.SetAttribute(”key”,AppKey);  
  38. xElem2.SetAttribute(”value”,AppValue);  
  39. xNode.AppendChild(xElem2);  
  40. }  
  41. xDoc.Save(Application.ExecutablePath + ”.config”);  
  42. }  

7.主要部分,開始調用webservice的方法!

準備工作:1)添加一個WEB引用,(先點菜單”項目”-”添加WEB引用”),

在彈出中輸入url的路徑:http://localhost/babywebsvc/SoftUpdate.asmx

2)假定你在開發時的WEBSERVICE的URL:http://localhost/babywebsvc/SoftUpdate.asmx

3)填入WEB引用名:AutoUpdateWebSvc

4)點下按紐完成WEB引用的添加

8.在你的Button1_click事件中添加如下CODE,主要使用異步調用

  1. private string svcUser = ””;  
  2. private string svcPwd = ””;  
  3. private string svcSoftName = ””;  
  4. private string svcCurrVersion = ””;  
  5. private string svcDnldFileName = ”Test.MSI”;  
  6. //下載下來的文件名,  
  7. private byte[] fbyte = null;   
  8. //下載后的升級文件的內容  
  9. private void Button1_Click(object sender,   
  10. System.EventArgs e)  
  11. {  
  12. //讀取App.config文件中的配置信息  
  13. svcUser = System.Configuration.  
  14. ConfigurationSettings.AppSettings[”user”];   
  15. //需要人證的用戶名  
  16. svcPwd = System.Configuration.  
  17. ConfigurationSettings.AppSettings[”pwd”];  
  18.  //認證密碼  
  19. svcSoftName = System.Configuration.  
  20. ConfigurationSettings.AppSettings  
  21. [”babyRecordSoftName”];//軟件名稱  
  22. svcCurrVersion = System.Configuration.  
  23. ConfigurationSettings.AppSettings[”Version”];  
  24. //當前版本號  
  25.  
  26. try  
  27. {  
  28. AutoUpdateWebSvc.SoftUpdate aSvc =   
  29. new AutoUpdateWebSvc.SoftUpdate();  
  30.  
  31. //此處可以改成自己實際應用時的URL,  
  32. 不管WEB引用是動態還是靜態,調用都會指向該URL  
  33. aSvc.Url = ”  
  34. http://localhost/babyWebSvc/SoftUpdate.asmx”;  
  35.  
  36. if(Button1.Text.Trim() == ”檢 查”)  
  37. {  
  38. //檢查***版本  
  39. System.AsyncCallback cb = new AsyncCallback  
  40. (SearchVersionCallBack);//異步回調方法,  
  41. 并檢查是否有高版本的升級軟件存在  
  42. aSvc.BeginSearchVersion(svcSoftName,cb,aSvc);  
  43. }  
  44. else if(Button1.Text.Trim() == ”升 級”)  
  45. {  
  46. //開始調用下載服務  
  47. InvokeDownload(); //函數體見下面的CODE  
  48. }  
  49.  
  50. }  
  51. catch(Exception ex)  
  52. {  
  53. MessageBox.Show(ex.Message);  
  54. }  
  55. }  
  56.  
  57.  
  58. //檢查***版本的異步回調方法  
  59. private void SearchVersionCallBack(System.  
  60. IAsyncResult ar)  
  61. {  
  62. if(ar==null)return;  
  63. if(ar.IsCompleted)  
  64. {  
  65. try  
  66. {  
  67. AutoUpdateWebSvc.SoftUpdate aSvc =   
  68. (AutoUpdateWebSvc.SoftUpdate)ar.AsyncState;  
  69. string sVersion = aSvc.EndSearchVersion(ar);  
  70. aSvc.Dispose();  
  71.  
  72.  
  73. if(svcCurrVersion.Trim() == sVersion.Trim())  
  74. MessageBox.Show”你的軟件當前版本已經是***的了,  
  75. 無需進行升級...”);  
  76. else if((string.Compare(svcCurrVersion.Trim(),  
  77. sVersion.Trim()))==-1)  
  78. {  
  79.  
  80. MessageBox.Show(”你的軟件當前版本比較低,  
  81. 可以進行升級...”);  
  82. Button1.Text = ”升 級”;  
  83. }  
  84.  
  85. }  
  86. catch(Exception ex)  
  87. {  
  88. MessageBox.Show(ex.Message);  
  89. }  
  90. }  
  91. }  
  92.  
  93. //調用遠程的WEB服務,開始下載  
  94. private void InvokeDownload()  
  95. {  
  96. try  
  97. {  
  98. AutoUpdateWebSvc.SoftUpdate aSvc =   
  99. new AutoUpdateWebSvc.SoftUpdate();  
  100. //此處可以改成自己實際應用時的URL,  
  101. 不管WEB引用是動態還是靜態,調用都會指向該URL  
  102. aSvc.Url = ”  
  103. http://localhost/babyWebSvc/SoftUpdate.asmx”;  
  104.  
  105. //開始下載  
  106. System.AsyncCallback cb =   
  107. new AsyncCallback(DownloadSoftCallBack);  
  108. //異步回調方法,保存文件  
  109. aSvc.BeginDownloadSoft(svcUser,svcPwd,  
  110. svcDnldFileName,lblVersion.Text.Trim(),cb,aSvc);  
  111.  
  112. }  
  113. catch(Exception ex)  
  114. {  
  115. MessageBox.Show(ex.Message);  
  116. }  
  117. }  
  118.  
  119. //下載方法執行完成后,異步回調方法  
  120. private void DownloadSoftCallBack(System.  
  121. IAsyncResult ar)  
  122. {  
  123. if(ar==null)  
  124. {  
  125. MessageBox.Show(”升級過程中出現錯誤,  
  126. 不能進行升級,請稍后再試...”);  
  127. return;  
  128. }  
  129. if(ar.IsCompleted)  
  130. {  
  131. try  
  132. {  
  133. AutoUpdateWebSvc.SoftUpdate aSvc =   
  134. (AutoUpdateWebSvc.SoftUpdate)ar.AsyncState;  
  135. fbyte = aSvc.EndDownloadSoft(ar);  
  136. aSvc.Dispose();  
  137.  
  138. //使用線程,保存文件  
  139. Thread th = new Thread(new ThreadStart(Save2Disk));  
  140. th.Start();  
  141.  
  142. }  
  143. catch(Exception ex)  
  144. {  
  145. MessageBox.Show(”升級過程中出現錯誤,”+ex.Message);  
  146. }  
  147. }  
  148. }  
  149.  
  150.  
  151. //將下載下來的字節數組保存成文件  
  152. private void Save2Disk()  
  153. {  
  154. try  
  155. {  
  156. FileInfo finfo = new FileInfo  
  157. (Application.ExecutablePath+svcDnldFileName);  
  158. if(finfo.Exists)finfo.Delete();//文件存在就刪除它  
  159. Stream stream = finfo.OpenWrite();  
  160.  
  161. prosBar.Maximum = fbyte.Length;//prosBar是一個進度條  
  162. prosBar.Minimum = 0;  
  163. prosBar.Step = 1;  
  164. int i=0;  
  165. foreach(byte b in fbyte)  
  166. {  
  167. stream.WriteByte(b);  
  168. prosBar.Value += 1;  
  169. }  
  170. stream.Flush();  
  171. stream.Close();  
  172.  
  173. DialogResult dr = MessageBox.Show  
  174. (”下載完成,是否現在就安裝升級程序...”,”  
  175. 提示信息”,MessageBoxButtons.OKCancel,  
  176. MessageBoxIcon.Information,MessageBoxDefaultButton.  
  177. Button1);  
  178. if(dr == DialogResult.OK)  
  179. {  
  180. ExecSetup();//啟動下載下來的安裝程序,用戶可以自己完成  
  181. }  
  182. }  
  183. catch(Exception ex)  
  184. {  
  185. MessageBox.Show(”升級過程中出現錯誤,”+ex.Message);  
  186. }  
  187. uiButton2.Enabled = true;  
  188. }  

9:總結,客戶端調用,是從,點擊Buttton1開始,搜索版本號,SearchVersion,當找到高版本升級包時,開始執行下載的方法DownloadSoft,然后保存到本地Save2Disk.不管客戶端的調用是同步還是異步,WEBService的方法都是一樣寫的,只不過同步調用,是直接使用WEBService中的方法名稱,異步調用則會由系統自動生成BeginXXX()與EndXXX()的方法名稱,提供給你使用。

經過上面的步驟,就基本實現了C# WebService更新客戶端軟件。

【編輯推薦】

  1. C#中定義裝箱和拆箱詳解
  2. 淺談C#類型系統
  3. 三種不同的C#異常類型
  4. 詳細介紹C#編譯器
  5. C#異常機制的相關解釋
責任編輯:冰荷 來源: e800
相關推薦

2009-08-07 13:55:35

Java客戶端類調用C# WebServi

2020-03-19 08:00:00

客戶端KubernetesAPI

2009-08-21 15:59:22

服務端與客戶端通信

2009-08-21 16:14:52

服務端與客戶端通信

2009-08-21 15:54:40

服務端與客戶端

2009-08-21 15:36:41

服務端與客戶端

2009-08-21 17:48:43

C#網絡編程

2009-08-21 17:53:25

C#網絡編程客戶端程序

2011-04-07 09:33:01

Activex

2009-08-21 14:33:15

C#異步傳輸字符串

2024-05-06 08:00:00

C#IP地址

2010-08-13 10:50:12

FlashFlexWebService

2009-08-21 16:37:54

C#客戶端程序

2023-11-03 08:15:27

PythonC#

2024-10-09 07:35:49

2024-09-14 08:16:24

Redis客戶端性能

2015-08-17 09:48:29

C#客戶端分布式緩存

2013-08-28 13:36:04

2011-08-17 10:10:59

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端
點贊
收藏

51CTO技術棧公眾號

亚洲女同志freevdieo| 青青青国产在线| 亚洲3区在线| 亚洲电影第三页| 日韩精彩视频| 国产高潮在线观看| 精品国产99久久久久久| 99综合99| 欧美日韩一区二区在线| 一区二区三区免费看| 亚洲av无码乱码在线观看性色| 国产日韩综合| xx视频.9999.com| 久久久国产精品无码| 国产三级一区| 精品久久久久久久久中文字幕| 亚洲精品二区| 午夜成人免费影院| 国产酒店精品激情| 欧美一级bbbbb性bbbb喷潮片| 艳妇荡乳欲伦69影片| 中文字幕中文字幕精品| 日韩一级大片在线| 国产三区在线视频| caoporn免费在线| 国产女人水真多18毛片18精品视频 | 91性高湖久久久久久久久_久久99| 九九热在线视频播放| 亚洲先锋影音| www.xxxx欧美| 色噜噜狠狠色综合网图区| 日韩日韩日韩日韩日韩| 尤物网在线观看| 91色在线porny| 国产精品二区在线| 国内精品国产成人国产三级| 奇米综合一区二区三区精品视频| 欧美专区在线视频| 日本一级黄色大片| 亚洲国产免费看| 欧美片一区二区三区| 免费看特级毛片| 日韩精品免费一区二区三区| 亚洲丝袜av一区| 日本一区二区三区网站| 久久视频免费| 欧美一区二区国产| 国产男女无遮挡猛进猛出| 四虎成人精品一区二区免费网站| 91久久精品网| 黄色片在线免费| 日韩三区免费| 欧美午夜理伦三级在线观看| 日本美女高潮视频| 亚洲电影有码| 欧美三级视频在线| 在线观看国产中文字幕| 久久天堂影院| 在线电影院国产精品| 国产成人美女视频| 欧美影院精品| 精品奇米国产一区二区三区| 人妻换人妻a片爽麻豆| 亚洲综合影院| 精品国产区一区| 成人免费毛片日本片视频| 亚洲bt欧美bt精品777| 亚洲欧洲国产一区| 色欲狠狠躁天天躁无码中文字幕| 欧美裸体在线版观看完整版| 色偷偷偷综合中文字幕;dd| 三级黄色免费观看| 欧美日韩1区| 91成人免费观看网站| 无码人妻精品一区二区三区不卡 | 国产视频手机在线播放| 欧洲亚洲精品久久久久| 日韩午夜在线观看| 91视频在线免费| 欧美猛男做受videos| 在线观看久久久久久| 成人免费精品动漫网站| 亚洲激情欧美| 国产成人福利视频| 一级做a爱片性色毛片| 国产999精品久久久久久绿帽| 国产欧美日韩综合精品二区| 奇米影视888狠狠狠777不卡| 国产精品美日韩| 久草免费福利在线| 成人自拍av| 欧美一卡2卡3卡4卡| 黄色短视频在线观看| 青青草国产免费一区二区下载 | 亚洲国产精品一区二区久| 麻豆av免费观看| 91不卡在线观看| 69影院欧美专区视频| 在线视频 中文字幕| 处破女av一区二区| 日韩欧美一区二区视频在线播放| 天堂av在线电影| 日本久久精品电影| 丰满熟女人妻一区二区三区| 精品一区二区三区的国产在线观看| 日韩最新av在线| 国产高清中文字幕| 床上的激情91.| 在线播放 亚洲| 亚洲美女久久精品| 日韩免费高清视频| 国产一区在线观看免费| 99精品福利视频| 91中文字幕在线| 成年人在线看| 婷婷六月综合网| √天堂资源在线| 成人精品亚洲| 秋霞午夜一区二区| 欧美一区二区三区激情| 亚洲人成小说网站色在线| 日韩手机在线观看视频| 精品丝袜久久| 九九久久国产精品| 国产偷拍一区二区| 国产精品毛片大码女人| 日韩中文字幕免费在线| 色天天色综合| 久久久亚洲福利精品午夜| 国产视频第一页| 日韩一区有码在线| 91欧美视频在线| 精品福利久久久| 国产精品18久久久久久首页狼| 天天射天天操天天干| 一区二区日韩av| gogo亚洲国模私拍人体| 亚洲欧美网站在线观看| 国产玖玖精品视频| 大乳在线免费观看| 日本福利一区二区| 99久久久无码国产精品性| 亚洲欧美日韩国产| 久久久久久国产精品mv| 嗯啊主人调教在线播放视频 | 欧美日韩精品| 亚洲xxx自由成熟| 91麻豆免费在线视频| 91成人在线精品视频| 一区二区欧美精品| 91视频免费入口| 在线中文一区| 91在线短视频| 男女在线视频| 亚洲国产精品热久久| 日韩和一区二区| 久久婷婷久久一区二区三区| 日本精品免费在线观看| 一区二区美女| 国产国语刺激对白av不卡| 成人精品一区二区三区校园激情| 色妞www精品视频| 少妇视频在线播放| 精品亚洲成av人在线观看| 国产精品99久久久久久大便| 日韩亚洲精品在线观看| 高清欧美性猛交| 色视频免费在线观看| 色狠狠桃花综合| 一级性生活免费视频| 国产精品羞羞答答xxdd| 拔插拔插海外华人免费| 色愁久久久久久| 国产精品永久免费观看| 91国内在线| 亚洲精品久久久久国产| 无码久久精品国产亚洲av影片| 中文字幕一区二区日韩精品绯色| 深夜福利网站在线观看| 99精品国产99久久久久久福利| 日本在线高清视频一区| 亚洲伊人伊成久久人综合网| 欧美精品国产精品日韩精品| 欧美色综合一区二区三区| 欧美日韩在线播| 欧美人妻精品一区二区免费看| 99精品黄色片免费大全| 天天爽夜夜爽一区二区三区| 欧美三区视频| 欧洲精品码一区二区三区免费看| 青娱乐极品盛宴一区二区| 欧美激情一区二区三区高清视频| 久久久久久久影视| 91精品国产综合久久久久久久久久| 久久久久久福利| 久久久精品蜜桃| 国偷自产av一区二区三区麻豆| 99久久久久久久| 久久午夜精品| 视色,视色影院,视色影库,视色网| 日韩高清三区| 亚洲综合中文字幕在线| 国产高清不卡| 欧美国产日韩中文字幕在线| www.亚洲免费| 亚洲第一福利在线观看| 888奇米影视| 一本色道久久综合亚洲aⅴ蜜桃| 日韩视频中文字幕在线观看| 国产亚洲欧美日韩日本| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 国产香蕉精品视频一区二区三区| 精品人妻aV中文字幕乱码色欲| 色婷婷精品久久二区二区蜜臂av| 成人观看免费视频| 亚洲国产高清在线观看视频| 国产麻豆剧传媒精品国产av| 国产制服丝袜一区| 欧美伦理片在线看| 亚洲精选成人| 日韩中文字幕在线不卡| 日韩电影在线视频| 欧美日韩大片一区二区三区| 国产精品18hdxxxⅹ在线| 国产综合福利在线| 色豆豆成人网| 国产999精品久久久影片官网| caoporn视频在线| 欧美福利视频在线| av网站在线看| 久久综合伊人77777尤物| www在线免费观看| 亚洲视频国产视频| 你懂的在线网址| 亚洲精品ady| 日韩一级片免费| 亚洲精品在线免费观看视频| 亚洲午夜久久久久久久久红桃| 51精品在线| 国产亚洲精品一区二555| 青青久在线视频免费观看| 亚洲福利影片在线| 日韩专区第一页| 精品国产91九色蝌蚪| 亚洲国产精品视频在线| 欧美va亚洲va香蕉在线| 亚洲欧美激情国产综合久久久| 欧美一级在线免费| av观看在线免费| 欧美一区二区性放荡片| aa视频在线免费观看| 日韩精品一区二区三区四区视频 | 免费成人美女在线观看.| 美女喷白浆视频| 麻豆精品视频在线| 一个色综合久久| 韩国欧美国产1区| 91欧美一区二区三区| 国产成人精品免费看| 亚洲乱妇老熟女爽到高潮的片| 成人免费视频网站在线观看| 中文字幕在线播放一区| 久久久久久夜精品精品免费| 中文字幕成人动漫| 国产精品久久久久久久久搜平片| 国产人与禽zoz0性伦| 亚洲一区二区四区蜜桃| 日韩欧美亚洲视频| 色一情一伦一子一伦一区| 亚洲视频在线观看免费视频| 欧美一区二区三区免费视频| 日韩一级免费毛片| 一本色道久久88综合日韩精品 | 性色av蜜臀av| 亚洲国产成人精品久久| 精品一二三区视频| 日韩中文字幕在线播放| 欧美性受ⅹ╳╳╳黑人a性爽| 96精品视频在线| 亚洲爱爱视频| 99久久精品久久久久久ai换脸| 日本国产精品| 亚洲一一在线| 在线日韩欧美| 福利在线一区二区三区| 国产成a人亚洲精品| 亚洲av综合一区二区| 亚洲免费成人av| 亚洲精品午夜国产va久久成人| 欧美日韩中文字幕精品| 成 人片 黄 色 大 片| 亚洲毛片在线观看| av网址在线| 国产精品99久久久久久www| 久久99成人| 日韩精品电影网站| 欧美日韩天堂| 亚洲这里只有精品| 99久久国产综合精品色伊| 91av手机在线| 欧美性猛交xxxx偷拍洗澡| 国产剧情精品在线| 精品在线小视频| 日本一本在线免费福利| 国产精品高潮呻吟久久av野狼| 一区二区三区自拍视频| 少妇免费毛片久久久久久久久| 国内精品久久久久久久97牛牛| 亚洲一区二区三区四区五区xx| 成人aaaa免费全部观看| 精品国产大片大片大片| 欧美日韩另类字幕中文| 国产黄色片av| 日韩在线中文字幕| 成人免费看黄| 国产青春久久久国产毛片| 91九色精品国产一区二区| 亚洲精品高清无码视频| 99久久精品久久久久久清纯| 久久中文免费视频| 欧美日韩在线精品一区二区三区激情 | 国产一区91精品张津瑜| 亚洲ⅴ国产v天堂a无码二区| 天天色图综合网| 囯产精品久久久久久| 久热爱精品视频线路一| 日韩制服一区| 日本一区二区三区在线视频| 国产婷婷精品| 日韩精品人妻中文字幕有码| 亚洲在线中文字幕| 国产免费不卡视频| 日韩在线观看免费av| 国产黄色一区| 色综合电影网| 玖玖国产精品视频| 国产精品1000部啪视频| 富二代精品短视频| 无码国产精品一区二区免费16| 欧美激情视频在线| 99re6热只有精品免费观看| 国产av不卡一区二区| 精品无人码麻豆乱码1区2区 | 日韩人妻一区二区三区| 欧美日韩国内自拍| 性xxxx搡xxxxx搡欧美| 97视频免费在线看| 欧美国产极品| 欧美日韩在线视频一区二区三区| 99这里只有精品| 欧美h在线观看| 亚洲一区二区久久久| 精品久久久网| 一区二区三区四区免费观看| 国产一区二区三区在线观看精品| 男人的天堂久久久| 日韩免费高清av| 国模精品视频| 欧美一区二区三区在线播放 | 香蕉久久国产| 亚洲女优在线观看| 欧美亚男人的天堂| 午夜免费福利在线观看| 亚洲va欧美va国产综合久久| 欧美日一区二区在线观看| xxxxxx黄色| 欧洲一区二区三区免费视频| 日本视频不卡| 91精品国产高清久久久久久91裸体| 欧美视频久久| 亚洲熟妇一区二区三区| 欧美绝品在线观看成人午夜影视| av网站网址在线观看| 久久大香伊蕉在人线观看热2| 视频一区国产视频| 99久久婷婷国产综合| 亚洲国产精品yw在线观看 | 在线成人h网| 色一情一交一乱一区二区三区| 欧美丝袜自拍制服另类| 福利在线视频网站| 好看的日韩精品| 男人的j进女人的j一区| 久久久久久久久久91| 亚洲人成电影网站| 国产精品欧美一区二区三区不卡 | 中国一级黄色录像| 99re在线视频这里只有精品| 中文字幕乱码在线观看| 久久99国产综合精品女同| 宅男在线一区| 波多野结衣网页| 色综合中文综合网| 看黄网站在线观看| 美乳视频一区二区| 精品一区二区免费在线观看| 中文字幕日韩一级| 精品久久久999| 久久99高清| 亚洲最大视频网|