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

C# 在PC上的通過(guò)藍(lán)牙(Bluetooth)發(fā)送數(shù)據(jù)到手機(jī),你會(huì)嗎?

開(kāi)發(fā) 后端
在PC端用.NET開(kāi)發(fā)一個(gè)藍(lán)牙下載的程序。實(shí)現(xiàn)在PC上查找周?chē)乃{(lán)牙設(shè)備(主要是手機(jī)),并將PC上的文件通過(guò)藍(lán)牙傳輸?shù)绞謾C(jī)上。

[[403076]]

本文轉(zhuǎn)載自微信公眾號(hào)「后端Q」,作者conan。轉(zhuǎn)載本文請(qǐng)聯(lián)系后端Q公眾號(hào)。

概述

在PC端用.NET開(kāi)發(fā)一個(gè)藍(lán)牙下載的程序。實(shí)現(xiàn)在PC上查找周?chē)乃{(lán)牙設(shè)備(主要是手機(jī)),并將PC上的文件通過(guò)藍(lán)牙傳輸?shù)绞謾C(jī)上。目前我采用的是OpenNETCF.Net.Bluetooth,能夠正常發(fā)現(xiàn)周?chē)乃{(lán)牙設(shè)備,手機(jī)也能夠正常進(jìn)行藍(lán)牙連接并接收文件。

代碼實(shí)現(xiàn)

1、查找周?chē){(lán)牙設(shè)備

  1. BluetoothClient bc = new BluetoothClient(); 
  2.         BluetoothDeviceInfo[] bdi; 
  3.         bdi = bc.DiscoverDevices(10);//查找周?chē)疃?0個(gè)藍(lán)牙設(shè)備 
  4.         if (bdi.Length == 0) 
  5.         { 
  6.             this.ShowErrMsg("請(qǐng)確認(rèn)您的藍(lán)牙已開(kāi)啟!"); 
  7.             return
  8.         } 

2、打開(kāi)數(shù)據(jù)流

  1. #region OBEXOpenStream 
  2.     public bool OBEXOpenStream(string BTMAC) 
  3.     { 
  4.  
  5.         // serial port UUID 
  6.         Guid spguid = OpenNETCF.Net.Bluetooth.BluetoothService.ObexObjectPush; 
  7.         OpenNETCF.Net.BluetoothAddress btaddress = OpenNETCF.Net.BluetoothAddress.Parse(BTMAC); 
  8.         client = new OpenNETCF.Net.Sockets.BluetoothClient(); 
  9.  
  10.         // define endpoint 
  11.         OpenNETCF.Net.BluetoothEndPoint endpoint = new OpenNETCF.Net.BluetoothEndPoint(btaddress, spguid); 
  12.  
  13.         try 
  14.         { 
  15.             //open socket 
  16.             client.Connect(endpoint); 
  17.         } 
  18.         catch 
  19.         { 
  20.             //unable to connect (server not listening on spguid) 
  21.             return false
  22.         } 
  23.  
  24.         //connect socket 
  25.         stream = client.GetStream(); 
  26.         return true
  27.     } 
  28.     #endregion 

3、配對(duì)連接

  1. private bool OBEXConnect() 
  2.     { 
  3.         //send client request 
  4.         byte[] ConnectPacket = new byte[7]; 
  5.  
  6.         ConnectPacket[0] = 0x80;      // Connect 
  7.         ConnectPacket[1] = 0x00;      // Packetlength Hi Byte 
  8.         ConnectPacket[2] = 0x07;      // Packetlength Lo Byte 
  9.         ConnectPacket[3] = 0x10;      // Obex v1 
  10.         ConnectPacket[4] = 0x00;      // no flags 
  11.         ConnectPacket[5] = 0x20;      // 8k max packet size Hi Byte 
  12.         ConnectPacket[6] = 0x00;      // 8k max packet size Lo Byte 
  13.  
  14.         stream.Write(ConnectPacket, 0, ConnectPacket.Length); 
  15.  
  16.         //listen for server response 
  17.         byte[] ReceiveBufferA = new byte[3]; 
  18.         stream.Read(ReceiveBufferA, 0, 3); 
  19.  
  20.         if (ReceiveBufferA[0] == 160) // 0xa0 
  21.         { 
  22.  
  23.             //success, decode rest of packet 
  24.             int plength = (0xff * ReceiveBufferA[1]) + ReceiveBufferA[2]; //length of packet is... 
  25.  
  26.             //listen for rest of packet 
  27.             byte[] ReceiveBufferB = new byte[plength - 3]; 
  28.             stream.Read(ReceiveBufferB, 0, plength - 3); 
  29.  
  30.             int obver = ReceiveBufferB[0]; //server obex version (16 = v1.0) 
  31.             int cflags = ReceiveBufferB[1]; //connect flags 
  32.             int maxpack = (0xff * ReceiveBufferB[2]) + ReceiveBufferB[3]; //max packet size 
  33.  
  34.             return true
  35.         } 
  36.         else 
  37.         { 
  38.             return false
  39.         } 
  40.     } 

4、發(fā)送文本內(nèi)容

  1. //send client request, start put 
  2.                         string tName = "BRT優(yōu)惠卷.txt"
  3.                         string tType = ""
  4.                         string tFileContent = "優(yōu)惠卷內(nèi)容:" + this.txtContent.Text.Trim(); 
  5.  
  6.                         int result = OBEXRequest("PUT", tName, tType, tFileContent); 
  7.                         if (result == 160) 
  8.                         { 
  9.                             SendSuccess = true
  10.                         } 

完整代碼

  1. using System; 
  2. using System.Data; 
  3. using System.Configuration; 
  4. using System.Web; 
  5. using System.Web.Security; 
  6. using System.Web.UI; 
  7. using System.Web.UI.WebControls; 
  8. using System.Web.UI.WebControls.WebParts; 
  9. using System.Web.UI.HtmlControls; 
  10. using System.Net.Sockets; 
  11. using OpenNETCF; 
  12. using OpenNETCF.Net; 
  13. using OpenNETCF.Net.Bluetooth; 
  14. using OpenNETCF.Net.Sockets; 
  15.  
  16. public partial class _Default : System.Web.UI.Page  
  17.     //Stream stream; 
  18.     NetworkStream stream; 
  19.     OpenNETCF.Net.Sockets.BluetoothClient client; 
  20.     protected void Page_Load(object sender, EventArgs e) 
  21.  
  22.     } 
  23.  
  24.     #region ShowErrMsg 
  25.     private void ShowErrMsg(string err) 
  26.         string str; 
  27.         str = "<script language='javascript'>"
  28.         str += " alert('" + err + "')"
  29.         str += "</script>"
  30.         this.RegisterStartupScript("", str); 
  31.     } 
  32.     #endregion 
  33.     protected void btnSend_Click(object sender, EventArgs e) 
  34.         if (this.txtContent.Text.Trim() == string.Empty) 
  35.         { 
  36.             this.ShowErrMsg("請(qǐng)輸入發(fā)送內(nèi)容!"); 
  37.             return
  38.         } 
  39.         BluetoothClient bc = new BluetoothClient(); 
  40.         BluetoothDeviceInfo[] bdi; 
  41.         bdi = bc.DiscoverDevices(10);//查找周?chē)疃?0個(gè)藍(lán)牙設(shè)備 
  42.         if (bdi.Length == 0) 
  43.         { 
  44.             this.ShowErrMsg("請(qǐng)確認(rèn)您的藍(lán)牙已開(kāi)啟!"); 
  45.             return
  46.         } 
  47.         bool SendSuccess = false
  48.         try 
  49.         { 
  50.             foreach (BluetoothDeviceInfo bd in bdi) 
  51.             { 
  52.                 if (OBEXOpenStream(bd.DeviceID.ToString())) 
  53.                 { 
  54.  
  55.                     if (OBEXConnect()) 
  56.                     { 
  57.                         //send client request, start put 
  58.                         string tName = "BRT優(yōu)惠卷.txt"
  59.                         string tType = ""
  60.                         string tFileContent = "優(yōu)惠卷內(nèi)容:" + this.txtContent.Text.Trim(); 
  61.  
  62.                         int result = OBEXRequest("PUT", tName, tType, tFileContent); 
  63.                         if (result == 160) 
  64.                         { 
  65.                             SendSuccess = true
  66.                         } 
  67.                     } 
  68.                     OBEXCloseStream(); 
  69.                 } 
  70.                 else 
  71.                 { 
  72.                     this.ShowErrMsg("連接失敗!" + bd.DeviceName.ToString()); 
  73.                 } 
  74.  
  75.             } 
  76.             if (SendSuccess) 
  77.             { 
  78.                 this.ShowErrMsg("發(fā)送成功,謝謝使用!"); 
  79.             } 
  80.         } 
  81.         finally 
  82.         { 
  83.             OBEXCloseStream(); 
  84.         } 
  85.     } 
  86.  
  87.  
  88.     #region OBEXOpenStream 
  89.     public bool OBEXOpenStream(string BTMAC) 
  90.  
  91.         // serial port UUID 
  92.         Guid spguid = OpenNETCF.Net.Bluetooth.BluetoothService.ObexObjectPush; 
  93.         OpenNETCF.Net.BluetoothAddress btaddress = OpenNETCF.Net.BluetoothAddress.Parse(BTMAC); 
  94.         client = new OpenNETCF.Net.Sockets.BluetoothClient(); 
  95.  
  96.         // define endpoint 
  97.         OpenNETCF.Net.BluetoothEndPoint endpoint = new OpenNETCF.Net.BluetoothEndPoint(btaddress, spguid); 
  98.  
  99.         try 
  100.         { 
  101.             //open socket 
  102.             client.Connect(endpoint); 
  103.         } 
  104.         catch 
  105.         { 
  106.             //unable to connect (server not listening on spguid) 
  107.             return false
  108.         } 
  109.  
  110.         //connect socket 
  111.         stream = client.GetStream(); 
  112.         return true
  113.     } 
  114.     #endregion 
  115.  
  116.     #region OBEXCloseStream 
  117.     private void OBEXCloseStream() 
  118.         if (stream != null
  119.         { 
  120.             stream.Close(); 
  121.         } 
  122.         if (client != null
  123.         { 
  124.             client.Close(); 
  125.         } 
  126.     } 
  127.     #endregion 
  128.  
  129.     #region  OBEXConnect 
  130.     private bool OBEXConnect() 
  131.         //send client request 
  132.         byte[] ConnectPacket = new byte[7]; 
  133.  
  134.         ConnectPacket[0] = 0x80;      // Connect 
  135.         ConnectPacket[1] = 0x00;      // Packetlength Hi Byte 
  136.         ConnectPacket[2] = 0x07;      // Packetlength Lo Byte 
  137.         ConnectPacket[3] = 0x10;      // Obex v1 
  138.         ConnectPacket[4] = 0x00;      // no flags 
  139.         ConnectPacket[5] = 0x20;      // 8k max packet size Hi Byte 
  140.         ConnectPacket[6] = 0x00;      // 8k max packet size Lo Byte 
  141.  
  142.         stream.Write(ConnectPacket, 0, ConnectPacket.Length); 
  143.  
  144.         //listen for server response 
  145.         byte[] ReceiveBufferA = new byte[3]; 
  146.         stream.Read(ReceiveBufferA, 0, 3); 
  147.  
  148.         if (ReceiveBufferA[0] == 160) // 0xa0 
  149.         { 
  150.  
  151.             //success, decode rest of packet 
  152.             int plength = (0xff * ReceiveBufferA[1]) + ReceiveBufferA[2]; //length of packet is... 
  153.  
  154.             //listen for rest of packet 
  155.             byte[] ReceiveBufferB = new byte[plength - 3]; 
  156.             stream.Read(ReceiveBufferB, 0, plength - 3); 
  157.  
  158.             int obver = ReceiveBufferB[0]; //server obex version (16 = v1.0) 
  159.             int cflags = ReceiveBufferB[1]; //connect flags 
  160.             int maxpack = (0xff * ReceiveBufferB[2]) + ReceiveBufferB[3]; //max packet size 
  161.  
  162.             return true
  163.         } 
  164.         else 
  165.         { 
  166.             return false
  167.         } 
  168.     } 
  169.     #endregion 
  170.  
  171.     #region OBEXRequest 
  172.     private int OBEXRequest(string tReqType, string tName, string tType, string tFileContent) 
  173.         //send client request 
  174.  
  175.         int i; 
  176.         int offset; 
  177.         int packetsize; 
  178.         byte reqtype = 0x82; 
  179.  
  180.         int tTypeLen = 0x03; 
  181.         int typeheadsize; 
  182.         int typesizeHi = 0x00; 
  183.         int typesizeLo = 0x03; 
  184.  
  185.         //tName = "contact.vcf"
  186.         //tType = "text/x-vCard"
  187.         //tFileContent = "BEGIN:VCARD\r\nVERSION:2.1\r\nN:;aardvark\r\nFN:aardvark\r\nEND:VCARD\r\n"
  188.  
  189.         if (tReqType == "GET"
  190.         { 
  191.             reqtype = 0x83;      // 131 GET-Final 
  192.         } 
  193.  
  194.         if (tReqType == "PUT"
  195.         { 
  196.             reqtype = 0x82;      // 130 PUT-Final 
  197.         } 
  198.  
  199.         packetsize = 3; 
  200.  
  201.         //Name Header 
  202.         int tNameLength = tName.Length; 
  203.         int nameheadsize = (3 + (tNameLength * 2) + 2); 
  204.         int namesizeHi = (nameheadsize & 0xff00) / 0xff; 
  205.         int namesizeLo = nameheadsize & 0x00ff; 
  206.         packetsize = packetsize + nameheadsize; 
  207.  
  208.         if (tType != ""
  209.         { 
  210.             //Type Header 
  211.             tTypeLen = tType.Length; 
  212.             typeheadsize = 3 + tTypeLen + 1; 
  213.             typesizeHi = (typeheadsize & 0xff00) / 0xff; 
  214.             typesizeLo = typeheadsize & 0x00ff; 
  215.             packetsize = packetsize + typeheadsize; 
  216.         } 
  217.  
  218.         //Body 
  219.         int fileLen = System.Text.Encoding.Default.GetBytes(tFileContent).Length;//tFileContent.Length; 
  220.         int fileheadsize = 3 + fileLen; 
  221.         int filesizeHi = (fileheadsize & 0xff00) / 0xff; ; 
  222.         int filesizeLo = fileheadsize & 0x00ff; ; 
  223.  
  224.         packetsize = packetsize + fileheadsize; 
  225.  
  226.         int packetsizeHi = (packetsize & 0xff00) / 0xff; 
  227.         int packetsizeLo = packetsize & 0x00ff; 
  228.  
  229.         byte[] tSendByte = new byte[packetsize]; 
  230.  
  231.         //PUT-final Header 
  232.         tSendByte[0] = reqtype;                    // Request type e.g. PUT-final 130 
  233.         tSendByte[1] = Convert.ToByte(packetsizeHi);        // Packetlength Hi 
  234.         tSendByte[2] = Convert.ToByte(packetsizeLo);        // Packetlength Lo 
  235.  
  236.         offset = 2; 
  237.  
  238.         //Name Header 
  239.         tSendByte[offset + 1] = 0x01;                  // HI for Name header     
  240.         tSendByte[offset + 2] = Convert.ToByte(namesizeHi);      // Length of Name header (2 bytes per char
  241.         tSendByte[offset + 3] = Convert.ToByte(namesizeLo);      // Length of Name header (2 bytes per char
  242.  
  243.         // Name+\n\n in unicode 
  244.         byte[] tNameU = System.Text.Encoding.BigEndianUnicode.GetBytes(tName); 
  245.         tNameU.CopyTo(tSendByte, offset + 4); 
  246.  
  247.         offset = offset + 3 + (tNameLength * 2); 
  248.         tSendByte[offset + 1] = 0x00;                  // null term 
  249.         tSendByte[offset + 2] = 0x00;                  // null term 
  250.  
  251.         offset = offset + 2; 
  252.  
  253.         if (tType != ""
  254.         { 
  255.             //Type Header 
  256.             tSendByte[offset + 1] = 0x42;                  // HI for Type Header 66 
  257.             tSendByte[offset + 2] = Convert.ToByte(typesizeHi);      // Length of Type Header 
  258.             tSendByte[offset + 3] = Convert.ToByte(typesizeLo);      // Length of Type Header 
  259.  
  260.             for (i = 0; i <= (tTypeLen - 1); i++) 
  261.             { 
  262.                 tSendByte[offset + 4 + i] = Convert.ToByte(Convert.ToChar(tType.Substring(i, 1))); 
  263.             } 
  264.             tSendByte[offset + 3 + tTypeLen + 1] = 0x00;            // null terminator 
  265.  
  266.             offset = offset + 3 + tTypeLen + 1; 
  267.         } 
  268.  
  269.         //Body 
  270.         tSendByte[offset + 1] = 0x49;                  //HI End of Body 73 
  271.         tSendByte[offset + 2] = Convert.ToByte(filesizeHi);      // 
  272.         tSendByte[offset + 3] = Convert.ToByte(filesizeLo);      //1k payload + 3 for HI header 
  273.  
  274.         //for (i = 0; i <= (fileLen - 1); i++) 
  275.         //{ 
  276.         //    tSendByte[offset + 4 + i] = Convert.ToByte(tFileContent.Substring(i, 1));//Convert.ToByte(Convert.ToChar(tFileContent.Substring(i, 1))); 
  277.         //} 
  278.         byte[] bfile = System.Text.Encoding.Default.GetBytes(tFileContent); 
  279.         for (i = 0; i <= bfile.Length - 1; i++) 
  280.         { 
  281.             tSendByte[offset + 4 + i] = bfile[i]; 
  282.         } 
  283.  
  284.         //tSendByte[offset+4+fileLen] = 0x00;              // null terminator 
  285.  
  286.         offset = offset + 3 + fileLen; 
  287.  
  288.         stream.Write(tSendByte, 0, tSendByte.Length); 
  289.  
  290.         //listen for server response 
  291.  
  292.         //TODO: can hang here forever waiting response... 
  293.  
  294.         bool x = stream.DataAvailable; // changed bluetoothclient - public NetworkStream GetStream() 
  295.  
  296.         byte[] tArray4 = new byte[3]; 
  297.         stream.Read(tArray4, 0, 3); 
  298.  
  299.         x = stream.DataAvailable; 
  300.  
  301.         if (tArray4[0] == 160) // 0xa0 
  302.         { 
  303.             int plength = (tArray4[1] * 256) + tArray4[2] - 3; 
  304.             byte[] tArray5 = new byte[plength]; 
  305.             if (plength > 0) 
  306.             { 
  307.                 stream.Read(tArray5, 0, plength); 
  308.                 //TODO: data in returned packet to deal with 
  309.             } 
  310.             return 160; 
  311.         } 
  312.  
  313.         if (tArray4[0] == 197) // 0xc5 Method not allowed 
  314.         { 
  315.             return 197; 
  316.         } 
  317.  
  318.         if (tArray4[0] == 192) // 0xc0 Bad Request 
  319.         { 
  320.             return 192; 
  321.         } 
  322.  
  323.         return 0; 
  324.     } 
  325.  
  326.     #endregion 

 

 

責(zé)任編輯:武曉燕 來(lái)源: 后端Q
相關(guān)推薦

2021-04-14 06:53:52

C# 修飾符 Public

2012-02-02 17:10:35

Windows PhoC#發(fā)送短信

2021-02-27 10:37:20

WindowsDocker版本

2012-02-24 09:04:51

云計(jì)算

2010-02-07 13:31:49

Ubuntu連接

2021-08-19 15:36:09

數(shù)據(jù)備份存儲(chǔ)備份策略

2021-07-27 06:49:11

C#存儲(chǔ)檢索

2012-03-01 15:02:01

程凱傲游移動(dòng)瀏覽器

2024-02-22 08:31:26

數(shù)據(jù)恢復(fù)工具MySQL回滾SQL

2020-11-03 14:56:09

手機(jī)安全信息泄露漏洞

2012-03-05 10:19:23

微軟Hadoop編程

2020-10-13 13:50:53

PCPC市場(chǎng)出貨量

2009-09-03 17:31:34

C#發(fā)送郵件

2016-12-01 13:06:31

技術(shù)大數(shù)據(jù)數(shù)據(jù)分析

2021-03-02 07:33:13

開(kāi)發(fā)C#字符

2023-09-26 07:38:53

c#Lambda表達(dá)式

2013-11-25 15:42:45

定制手機(jī)明星手機(jī)

2009-06-05 10:24:37

C#排序排序

2021-09-22 09:42:41

鴻蒙HarmonyOS應(yīng)用

2014-08-11 15:57:16

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文无码精品一区二区三区| 岛国精品资源网站| 色影院视频在线| 久久国产日韩欧美精品| 日韩在线视频观看| 一二三级黄色片| 激情图片在线观看高清国产| 成人免费毛片高清视频| 性亚洲最疯狂xxxx高清| 久久人人爽人人人人片| 欧洲成人一区| 亚洲色图视频免费播放| 成人欧美一区二区三区视频| 国产精品1区2区3区4区| 欧美影院视频| 色综合天天综合网国产成人综合天 | 在线观看日韩一区| 亚洲图片在线观看| 成人小说亚洲一区二区三区| 噜噜噜91成人网| 日韩网站在线观看| 中文字幕a在线观看| sis001欧美| 中文字幕一区二区三区精华液 | 欧美成人午夜免费视在线看片| 亚洲少妇中文字幕| 蜜桃成人精品| 夜夜嗨av一区二区三区四季av| 久久草.com| 国产人妻精品一区二区三| 在线观看一区| 色七七影院综合| a级一a一级在线观看| 91九色综合| 五月婷婷欧美视频| 亚洲一区二区在线观| 欧美 日韩 国产 在线| 美女国产一区二区| 欧美专区国产专区| 久久婷婷一区二区| 残酷重口调教一区二区| 日韩精品在线网站| www.com黄色片| 蜜臀久久精品| 一区二区免费在线播放| 中文字幕久久综合| 国自产拍在线网站网址视频| 丰满放荡岳乱妇91ww| 国产精品视频久| 中文字幕超碰在线| 91欧美国产| 中文字幕日韩高清| 中文字幕国产综合| 日韩欧美久久| 欧美精选一区二区| 色国产在线视频| 美女写真久久影院| 欧美视频在线观看 亚洲欧| 女人色极品影院| jizz在线免费观看| 91在线免费播放| 国产精品免费一区二区三区| 国产裸体无遮挡| 久久99精品国产.久久久久久| 欧美影院在线播放| 日本熟妇成熟毛茸茸| 欧美三级黄美女| 欧美丰满少妇xxxxx做受| 久久久久久视频| 国产高清一区| 最好看的2019年中文视频| 欧美做受xxxxxⅹ性视频| 精品女人视频| 欧美tickling网站挠脚心| 免费黄频在线观看| 亚洲青青久久| 欧美精品xxxxbbbb| 亚洲精品第三页| 欧美h版在线观看| 日韩免费在线观看| 超碰caoprom| 婷婷精品在线观看| 国产午夜精品麻豆| 精品无码人妻一区二区免费蜜桃| 神马电影久久| 中文字幕精品视频| 亚洲欧洲综合网| 五月天激情综合网| 欧美日本亚洲视频| 日韩精品一区三区| 久久午夜影视| 国产乱肥老妇国产一区二| 国产精品欧美激情在线| 韩国v欧美v亚洲v日本v| 91午夜理伦私人影院| 午夜精品久久久久久久99| 成年人网站91| 欧美一级日本a级v片| 福利在线播放| 亚洲欧洲制服丝袜| 美女黄色免费看| 亚洲欧美电影| 欧美另类高清zo欧美| 美女被艹视频网站| 久久夜色精品国产噜噜av小说| 国产视频自拍一区| xxx在线播放| 国产精品97| 久久久免费电影| 亚洲高清视频免费观看| 国产一区二区在线看| 国产成人成网站在线播放青青| 飘雪影院手机免费高清版在线观看| 亚洲国产电影在线观看| 精品视频在线观看一区二区| 亚洲最大网站| 91精品蜜臀在线一区尤物| 亚洲图片综合网| 日韩系列欧美系列| 91精品国产乱码久久久久久蜜臀 | 欧美日韩在线看| 蜜桃福利午夜精品一区| 欧美一级一片| 爱福利视频一区| 国产精品一区二区三区四| 麻豆免费看一区二区三区| 国产一区二区高清不卡| 日本亚洲精品| 欧美性生交xxxxxdddd| xxxx在线免费观看| 少妇高潮一区二区三区| 久久伊人色综合| 一级成人黄色片| 国产精品456| 五月天久久狠狠| 牛牛在线精品视频| 欧美美女bb生活片| 精品无人区无码乱码毛片国产| 欧美日韩福利| 91精品久久久久久| 黄视频在线播放| 亚洲国产欧美一区二区三区丁香婷| 五月婷婷六月合| 综合伊思人在钱三区| 欧美大片免费看| 一本大道伊人av久久综合| jlzzjlzz亚洲日本少妇| 六月婷婷激情网| 久久69成人| 亚洲一区二区黄| 7799精品视频天天看| 国产1区2区3区精品美女| 一区二区三区久久网| 国模一区二区| 亚洲欧美日韩另类| www.国产高清| 国产精品伊人色| 婷婷视频在线播放| av一级久久| 色噜噜国产精品视频一区二区 | 99福利在线| 在线免费不卡视频| 国产激情在线免费观看| 亚洲啪啪91| 国产一区二区免费电影| 黑人玩欧美人三根一起进| 日韩午夜激情电影| 欧美日韩在线视频免费播放| 极品少妇一区二区三区精品视频| 亚洲欧洲日韩综合二区| 成人不卡视频| 亚洲天堂av网| 国产91av在线播放| 国产精品午夜电影| 久久婷婷综合色| 成人三级视频| 国产欧美精品一区二区三区-老狼| melody高清在线观看| 欧美性做爰猛烈叫床潮| 欧美性生交大片| 国产毛片精品国产一区二区三区| 日本精品免费视频| 香蕉免费一区二区三区在线观看 | 国产一区二区在线观看免费播放| 91国内在线| 日韩精品最新网址| 免费毛片一区二区三区| 国产美女久久久久| youjizz.com在线观看| 成人自拍在线| 欧美一级淫片播放口| 国产二区在线播放| 宅男在线国产精品| 久久午夜无码鲁丝片| 国产99久久久国产精品免费看| 日韩最新中文字幕| 77成人影视| 国产成人午夜视频网址| 日韩免费啪啪| 亚洲精品一区二区三区影院 | 天堂av资源网| 欧美性受极品xxxx喷水| 国产黄色小视频网站| 成人国产精品免费观看视频| 国产在线观看福利| 色狮一区二区三区四区视频| 91免费版黄色| 欧美日韩美女| 美女视频黄免费的亚洲男人天堂| 欧美熟妇乱码在线一区 | 中文字幕av片| 亚洲一区中文日韩| 久久久久亚洲AV成人无码国产| 国产午夜精品一区二区三区欧美 | 日韩欧美在线精品| 国产精品视频一区二区高潮| av在线理伦电影| 伊人久久免费视频| 亚洲精品一区二区三区区别| 欧美亚洲动漫另类| 欧美高清视频一区二区三区| 久久久久9999亚洲精品| 潘金莲一级淫片aaaaaaa| 男人的天堂亚洲| 蜜臀av.com| 欧美综合久久| 久久er99热精品一区二区三区 | 91在线在线观看| 在线观看精品| 国语自产在线不卡| 成人在线观看网站| 亚洲国产精品人久久电影| 国产日韩久久久| 午夜欧美2019年伦理| 亚洲 欧美 变态 另类 综合| 国产色产综合色产在线视频| 无码av免费精品一区二区三区| 日本免费新一区视频| 少妇高潮毛片色欲ava片| 日韩欧美精品| 欧洲精品亚洲精品| 丝袜美腿一区二区三区动态图| 97se在线视频| 激情综合五月| 国产成人综合一区二区三区| 99riav视频在线观看| 97在线观看免费| av中文字幕在线播放| 最好看的2019的中文字幕视频| 日本1级在线| 日韩精品黄色网| 天天摸天天碰天天爽天天弄| 日韩一级片网站| 国产理论片在线观看| 欧美视频中文字幕| 无码一区二区三区在线观看| 精品日本美女福利在线观看| 国产无遮挡又黄又爽又色| 一区二区激情小说| 9999热视频| 亚洲视频一区二区在线| 日韩av网站在线播放| 国产精品成人一区二区三区夜夜夜| 性色av蜜臀av色欲av| 97久久久精品综合88久久| 丰满岳乱妇一区二区 | 欧美色道久久88综合亚洲精品| 国产真实乱人偷精品视频| 亚洲综合在线视频| 精品在线视频免费| 亚洲18色成人| 四虎成人永久免费视频| 色综合天天性综合| 中文字幕免费高清网站| 欧洲亚洲国产日韩| 中文字幕在线观看你懂的| 色偷偷88欧美精品久久久| 黄色在线视频网址| 在线视频综合导航| 亚洲天堂avav| 欧美一区二区三区视频| 亚洲欧美高清视频| 亚洲黄在线观看| 视频一区二区免费| 日韩国产精品一区| 丁香婷婷在线观看| 久久久国产精品视频| 免费在线播放电影| 2020久久国产精品| 国产精品成人国产| 91精品一区二区| 国产精品极品国产中出| 欧美日韩亚洲免费| 久久精品国产亚洲夜色av网站| 无码免费一区二区三区免费播放 | 久久99精品国产91久久来源| 超级砰砰砰97免费观看最新一期 | 欧美大片免费观看在线观看网站推荐| h片精品在线观看| 欧美中文在线观看国产| 日本肉肉一区| 91超碰rencao97精品| 亚洲都市激情| 黄色www在线观看| 亚洲美女黄网| 超碰影院在线观看| 国产乱码精品一区二区三区五月婷| 国产chinese中国hdxxxx| 国产婷婷色一区二区三区四区| h色网站在线观看| 狠狠色香婷婷久久亚洲精品| 亚洲天堂avav| 日韩精品极品视频| 新版中文在线官网| 日本精品中文字幕| 欧美不卡在线观看| 精品国产福利| 香蕉精品视频在线观看| 欧美日韩亚洲一| 日本aⅴ免费视频一区二区三区| a级一a一级在线观看| 亚洲自拍偷拍九九九| 国产又粗又长视频| 视频在线观看99| 日韩欧美一区二区三区在线观看| 精品无码久久久久国产| 精品电影一区| 中文字幕人妻无码系列第三区| 国产精品乱人伦中文| 国内自拍视频在线播放| 亚洲精品国产精品国自产观看浪潮 | 99久久精品免费看国产| 久久国产精品波多野结衣av| 91麻豆精品国产91久久久久| 香蕉视频免费在线播放| 国产精品普通话| 欧美日韩在线观看视频小说| 97成人在线免费视频| 不卡av在线免费观看| 男人天堂中文字幕| 亚洲精品456在线播放狼人| av影院在线| 国产一区免费视频| 亚洲日产国产精品| 国产精品久久久久久在线观看| 亚洲永久精品大片| 粉嫩小泬无遮挡久久久久久| 久久久久久成人精品| 国产精品17p| 91视频最新入口| 久久嫩草精品久久久精品| www.久久网| 色琪琪综合男人的天堂aⅴ视频| 四虎永久精品在线| 潘金莲一级淫片aaaaaa播放1| 国产一区 二区 三区一级| 久久精品99国产精| 亚洲爱爱爱爱爱| 欧美日韩视频网站| 亚洲永久激情精品| 国产精品一区二区男女羞羞无遮挡| 农村黄色一级片| 亚洲高清福利视频| 在线成人av观看| 一区二区在线观| 国产成都精品91一区二区三| 日韩精品在线免费看| 国产午夜精品全部视频播放| 日本久久一区| www.国产在线播放| 久久免费视频一区| 在线观看一二三区| 欧美精品久久久久久久免费观看| 日韩伦理一区二区三区| 蜜桃免费在线视频| 亚洲免费观看高清完整版在线观看熊| 欧美一级特黄aaaaaa大片在线观看 | 欧美精品亚洲精品| 另类小说欧美激情| 久久久久久久久99| 亚洲欧美国产制服动漫| 亚洲男人在线| 成人综合视频在线| 国产精品不卡在线| 国产香蕉在线观看| 国产精品久久色| 精品69视频一区二区三区Q| 丝袜美腿中文字幕| 91精品国产91久久综合桃花 | 国产噜噜噜噜久久久久久久久| 欧美精品综合| 免费视频91蜜桃| 精品国内片67194| 欧美成人app| 男人添女荫道口喷水视频| 亚洲国产成人私人影院tom| 国产91免费在线观看| 成人免费大片黄在线播放| 国产日韩一区二区三区在线播放| 日韩影院一区二区|