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

加速程序開發 Python整合C語言模塊

開發 后端 前端
本文通過實例研究如何在Python程序中整合既有的C語言模塊,包括用C語言編寫的源程序和動態鏈接庫等,從而充分發揮Python語言和C語言各自的優勢。

Python是一種用于快速開發軟件的編程語言,它的語法比較簡單,易于掌握,但存在執行速度慢的問題,并且在處理某些問題時存在不足,如對計算機硬件系統的訪問,對媒體文件的訪問等。而作為軟件開發的傳統編程語言C語言,卻能在這些問題上很好地彌補Python語言的不足。

51CTO推薦閱讀:專訪豆瓣網***架構師洪強寧:Python,簡單的力量

概覽

Python是一種用于快速開發軟件的編程語言,它的語法比較簡單,易于掌握,但存在執行速度慢的問題,并且在處理某些問題時存在不足,如對計算機硬件系統的訪問,對媒體文件的訪問等。而作為軟件開發的傳統編程語言——C語言,卻能在這些問題上很好地彌補Python語言的不足。因此,本文通過實例研究如何在Python程序中整合既有的C語言模塊,包括用C語言編寫的源程序和動態鏈接庫等,從而充分發揮Python語言和C語言各自的優勢。

Python語言的特點

Python作為一門程序開發語言,被越來越多地運用到快速程序開發。Python是一種解釋型的,互動的,面向對象的編程語言,它包含了模塊化的操作,異常處理,動態資料形態,以及類型的使用。它的語法表達優美易讀,具有很多優秀的腳本語言的特點:解釋的,面向對象的,內建的高級數據結構,支持模塊和包,支持多種平臺,可擴展。而且它還支持交互式方式運行,圖形方式運行。它擁有眾多的編程界面支持各種操作系統平臺以及眾多的各類函數庫,利用C和C++可以對它進行擴充。

C語言的特點

C語言作為最受人們歡迎的語言之一,有廣泛的發展基礎。簡潔緊湊、靈活方便,功能強大是其特點。另外,C語言是一門中級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。由于可以直接訪問物理地址,可以方便的對硬件進行操作。因此,很多的系統軟件都是由C語言編寫。

Python語言與C語言的交互

為了節省軟件開發成本,軟件開發人員希望能夠縮短的軟件的開發時間,希望能夠在短時間內開發出穩定的產品。Python功能強大,簡單易用,能夠快速開發應用軟件。但是由于Python自身執行速度的局限性,對性能要求比較高的模塊需要使用效率更高的程序語言進行開發。

例如C語言,系統的其他模塊運用Python進行快速開發,***將C語言開發的模塊與Python開發的模塊進行整合。在此背景下,基于Python語言與C語言的各自特點,用C語言來擴展現有的Python程序,顯得很有意義。本文首先介紹幾種常用的整合Python程序與C語言程序的方法,***給出相應的實例。

利用ctypes模塊整合Python程序和C程序

ctypes模塊

ctypes是Python的一個標準模塊,它包含在Python2.3及以上的版本里。ctypes是一個Python的高級外部函數接口,它使得Python程序可以調用C語言編譯的靜態鏈接庫和動態鏈接庫。運用ctypes模塊,能夠在Python源程序中創建,訪問和操作簡單的或復雜的C語言數據類型。

最為重要的是ctypes模塊能夠在多個平臺上工作,包括Windows,WindowsCE,MacOSX,Linux,Solaris,FreeBSD,OpenBSD。接下來通過幾個簡單的例子來看一下ctypes模塊如何整合Python程序和C程序。

#p#

源代碼層面上的整合

利用Python本身提供的ctypes模塊可以使Python語言和C語言在源代碼層面上進行整合。本節介紹了如何通過使用ctypes庫,在Python程序中可以定義類似C語言的變量。下表列出了ctypes變量類型,C語言變量類型和Python語言變量類型之間的關系:

表1.ctypes,c語言和Python語言變量類型關系 
表1.ctypes,c語言和Python語言變量類型關系

表1中的***列是在ctypes庫中定義的變量類型,第二列是C語言定義的變量類型,第三列是Python語言在不使用ctypes時定義的變量類型。舉例:

  1. 清單1.ctypes簡單使用  
  2. >>>fromctypesimport*#導入ctypes庫中所有模塊  
  3. >>>i=c_int(45)#定義一個int型變量,值為45  
  4. >>>i.value#打印變量的值  
  5. 45  
  6. >>>i.value=56#改變該變量的值為56  
  7. >>>i.value#打印變量的新值  
  8. 56 

從下面的例子可以更明顯地看出ctypes里的變量類型和C語言變量類型的相似性:

  1. 清單2.ctypes使用C語言變量  
  2. >>>p=create_string_buffer(10)#定義一個可變字符串變量,長度為10  
  3. >>>p.raw#初始值是全0,即C語言中的字符串結束符’\0’  
  4. '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'  
  5. >>>p.value="Student"#字符串賦值  
  6. >>>p.raw#后三個字符仍是’\0’  
  7. 'Student\x00\x00\x00'  
  8. >>>p.value="Big"#再次賦值  
  9. >>>p.raw#只有前三個字符被修改,第四個字符被修改為’\0’  
  10. 'Big\x00ent\x00\x00\x00' 

下面例子說明了指針操作:

  1. 清單3.ctypes使用C語言指針  
  2. >>>i=c_int(999)#定義int類型變量i,值為999  
  3. >>>pi=pointer(i)#定義指針,指向變量i  
  4. >>>pi.contents#打印指針所指的內容  
  5. c_long(999)  
  6. >>>pi.contents=c_long(1000)#通過指針改變變量i的值  
  7. >>>pi.contents#打印指針所指的內容  
  8. c_long(1000) 

下面例子說明了結構和數組的操作:

  1. 清單4.ctypes使用C語言數組和結構體  
  2. >>>classPOINT(Structure):#定義一個結構,內含兩個成員變量x,y,均為int型  
  3. ..._fields_=[("x",c_int),  
  4. ...("y",c_int)]  
  5. ...  
  6. >>>point=POINT(2,5)#定義一個POINT類型的變量,初始值為x=2,y=5 
  7. >>>printpoint.x,point.y#打印變量  
  8. 25  
  9. >>>point=POINT(y=5)#重新定義一個POINT類型變量,x取默認值  
  10. >>>printpoint.x,point.y#打印變量  
  11. 05  
  12. >>>POINTPOINT_ARRAY=POINT*3#定義POINT_ARRAY為POINT的數組類型  
  13. #定義一個POINT數組,內含三個POINT變量  
  14. >>>pa=POINT_ARRAY(POINT(7,7),POINT(8,8),POINT(9,9))  
  15. >>>forpinpa:printp.x,p.y#打印POINT數組中每個成員的值  
  16. ...  
  17. 77  
  18. 88  
  19. 99 

#p#

Python訪問C語言dll

通過ctypes模塊,Python程序可以訪問C語言編譯的dll,本節通過一個簡單的例子,Python程序helloworld.py中調用some.dll中的helloworld函數,來介紹Python程序如何調用windows平臺上的dll。

導入動態鏈接庫

  1. 清單5.ctypes導入dll  
  2. fromctypesimportwindll#首先導入ctypes模塊的windll子模塊  
  3. somelibc=windll.LoadLibrary(some.dll)#使用windll模塊的LoadLibrary導入動態鏈接庫 

訪問動態鏈接庫中的函數

  1. 清單6.ctypes使用dll中的函數  
  2. somelibc.helloworld()#這樣就可以得到some.dll的helloworld的返回值 

整個helloworld.py是這樣的:

  1. 清單7.Pythonhellpworld代碼  
  2. fromctypesimportwindll  
  3. defcallc():  
  4. #loadthesome.dll  
  5. somelibc=windll.LoadLibrary(some.dll)  
  6. printsomelibc.helloworld()  
  7. if__name__==“__main__”:  
  8. callc() 

在命令行運行helloworld.py,在console上可以看到some.dll中helloworld的輸出。

  1. 清單8.PythonhellpworldWindowscommandconsole運行輸出  
  2. C:\>pythonC:\python\test\helloworld.py  
  3. HelloWorld!Justasimpletest. 

Python調用C語言so

通過ctypes模塊,Python程序也可以訪問C語言編譯的so文件。與Python調用C的dll的方法基本相同,本節通過一個簡單的例子,Python程序helloworld.py中調用some.so中的helloworld函數,來介紹Python程序如何調用linux平臺上的so。

導入動態鏈接庫

  1. 清單9.ctypes導入so  
  2. fromctypesimportcdll  
  3. #首先導入ctypes模塊的cdll子模塊,注意linux平臺上使用cdll的,而不是windll。  
  4. somelibc=cdll.LoadLibrary(“./some.so”)  
  5. #使用cdll模塊的LoadLibrary導入動態鏈接庫 

訪問動態鏈接庫中的函數

  1. 清單10.ctypes使用so中的函數  
  2. somelibc.helloworld()#使用方法與windows平臺上是一樣的 

整個helloworld.py是這樣的:

  1. 清單11.Pythonhelloworld代碼  
  2. fromctypesimportcdll  
  3. defcallc():  
  4. #loadthesome.so  
  5. somelibc=cdll.LoadLibrary(some.so)  
  6. printsomelibc.helloworld()  
  7. if__name__==“__main__”:  
  8. callc() 

在命令行運行helloworld.py,在linux標準輸出上可以看到some.so中helloworld的輸出。

  1. 清單12.PythonhellpworldLinuxshell運行輸出  
  2. [root@linux-790t]python./helloworld.py  
  3. HelloWorld!Justasimpletest. 

#p#

Python程序和C程序整合實例

以下我們舉例用Python來實現一個小工具,用來實現hash算法,查看文件的校驗和(MD5,CRC,SHA1等等)。通過查看文件的校驗和,可以知道文件在傳輸過程中是否被破壞或篡改。

Hash,一般翻譯做“散列”,也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射,pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。

由于相對C語言來說,Python的運行效率較低,因此我們的Python小工具利用一個已有的C語言的動態鏈接庫(hashtcalc.dll)來實現我們的程序。本例中,我們運用wxPython編寫簡單的GUI界面,通過python調用hashtcalc.dll的接口計算文件的校驗和,然后輸出在界面上。

架構圖

圖1.工具的架構圖 
圖1.工具的架構圖

hashcalc.dll接口描述

函數名:calc_CRC32

函數:char*calc_CRC32(char*filename);

參數:文件名

返回值:字符串

說明:該函數對輸入的文件內容進行計算,并且返回它的CRC32

函數名:calc_MD5

函數:char*calc_MD5(char*filename);

參數:文件名

返回值:字符串

說明:該函數對輸入的文件內容進行計算,并且返回它的MD5

函數名:calc_SHA1

函數:char*calc_SHA1(char*filename);

參數:文件名

返回值:字符串

說明:該函數對輸入的文件內容進行計算,并且返回它的SHA1

HashcalcAdapter代碼

HashcalcAdapter.py實現了一個python的classHashcalcAdapter,HashcalcAdapter對hashtcalc.dl的C語言接口進行了封裝,使得其他python模塊可以直接通過HashcalcAdapter使用hashtcalc.dll中實現的hash算法。具體的代碼如下:

  1. 清單13.HashcalcAdapter.py代碼  
  2. fromctypesimportwindll  
  3. fromctypesimport*  
  4. classHashcalcAdapter(object):  
  5. def__init__(self,dllpath):  
  6. self._dllpath=dllpath  
  7. self._libc=windll.LoadLibrary(self._dllpath)  
  8.  
  9. defcalc_CRC32(self,filename):  
  10. new_filename=c_char_p(filename)  
  11. returnself._libc.calc_CRC32(new_filename)  
  12.  
  13. defcalc_MD5(self,filename):  
  14. new_filename=c_char_p(filename)  
  15. returnself._libc.calc_MD5(new_filename)  
  16.  
  17. defcalc_SHA1(self,filename):  
  18. new_filename=c_char_p(filename)  
  19. returnself._libc.calc_SHA1(new_filename) 

運行界面

圖2.工具的運行界面 
圖2.工具的運行界面

總結

在軟件開發過程中同時運用Python語言和C語言,既能夠在加快開發速度的同時,也能夠保證軟件的運行性能。

【編輯推薦】

  1. 專訪豆瓣網***架構師洪強寧:Python,簡單的力量
  2. Python作用域的實際操作步驟的相關介紹
  3. 對Python特色的詳細介紹
  4. Python嵌入C實例的相關具體解析 
責任編輯:王曉東 來源: IBM
相關推薦

2012-06-08 17:58:48

安全加速Check Point

2012-02-08 15:06:31

ibmdw

2009-09-24 17:21:17

加速Hibernate

2023-08-17 20:13:42

2019-05-24 16:20:11

Python 開發編程語言

2009-08-13 17:04:09

C#語言C#程序

2009-01-16 08:57:58

GCCC編譯

2011-05-13 15:54:50

C模塊化

2009-06-15 11:03:10

Java語言C#語言

2010-03-25 18:13:06

Python編程語言

2010-01-22 11:23:06

C++程序

2010-02-24 14:27:25

Python模塊語言

2011-05-17 14:53:35

C

2010-01-20 09:14:49

C語言模塊化

2011-05-13 15:46:49

C模塊化

2010-08-02 09:10:36

Flex模塊化

2009-09-03 17:42:07

C#開發CF藍牙模塊

2013-07-04 13:19:24

Java開發速度

2021-05-27 08:47:16

C語言C語言程序開發

2009-09-02 17:08:30

C#語言開發Windo
點贊
收藏

51CTO技術棧公眾號

久久久久久久一区二区| 91精选在线观看| 亚洲精品国产一区| 国产av无码专区亚洲av麻豆| 亚洲特级毛片| 一本色道久久综合亚洲精品小说| 午夜激情视频网| 小草在线视频免费播放| 最近日韩中文字幕| 久久偷看各类wc女厕嘘嘘偷窃 | 日本电影全部在线观看网站视频| 国产精品中文字幕日韩精品 | 久久精品日产第一区二区三区高清版 | 97精品国产99久久久久久免费| 亚洲精品国产精华液| 欧美亚洲精品日韩| 成人久久久精品国产乱码一区二区 | 色先锋aa成人| 国产主播自拍av| 免费av网站在线观看| 91美女蜜桃在线| wwwxx欧美| 国产精品久久久久久久免费| 视频一区二区三区中文字幕| 97国产成人精品视频| 在线看的片片片免费| 国产一区二区三区探花| 亚洲国产97在线精品一区| 在线观看视频你懂得| 精品123区| 色婷婷一区二区| 3d动漫一区二区三区| 婷婷丁香在线| 亚洲婷婷在线视频| 亚洲一区二区三区精品动漫| 男同在线观看| 久久久精品欧美丰满| 激情视频一区二区| 头脑特工队2在线播放| 成人精品视频一区二区三区尤物| 亚洲综合中文字幕68页| 国产免费黄色录像| 寂寞少妇一区二区三区| 国产成人一区二区三区电影| 日韩在线视频免费播放| 日韩午夜黄色| 7777精品视频| 日本网站在线播放| 亚洲精品国产日韩| 91国内免费在线视频| 人人干人人干人人干| 一区精品久久| 77777亚洲午夜久久多人| 国产精品视频久久久久久久| 夜夜嗨av一区二区三区网站四季av| 欧美高清不卡在线| 精品少妇theporn| 在线看片一区| 日韩av免费网站| 青青草视频在线观看免费| 日韩电影在线观看网站| 国产噜噜噜噜久久久久久久久| 亚洲天堂视频在线| 国产精品影视天天线| 动漫一区二区在线| 日色在线视频| 国产精品每日更新| 久久免费一级片| 成全电影大全在线观看| 欧美日韩中文字幕综合视频| 国产精品视频黄色| 欧美精品三级在线| 亚洲精品99久久久久中文字幕| 性欧美成人播放77777| 国产一区二区三区天码| www.日韩视频| 国产成人亚洲精品自产在线 | 亚洲激情在线看| 亚洲开心激情| 亚洲女同性videos| 亚洲综合久久av一区二区三区| 午夜日韩av| 8x拔播拔播x8国产精品| 在线观看视频二区| 成人午夜免费av| 日韩av电影免费播放| 黄网站app在线观看| 亚洲成va人在线观看| 自拍偷拍 国产| 中文字幕区一区二区三| 亚洲精品一二区| 国产喷水在线观看| 免费日韩视频| a级国产乱理论片在线观看99| 免费在线国产| 亚洲精品视频自拍| 激情综合网婷婷| 9l视频自拍蝌蚪9l视频成人| 国产亚洲精品va在线观看| 国产精品九九九九九九| 日本亚洲天堂网| 国产欧美亚洲日本| 国产在线观看免费麻豆| 色av一区二区| 亚洲熟女一区二区三区| 久久密一区二区三区| 91av视频在线观看| av在线免费在线观看| 久久精品视频免费| xxxx18hd亚洲hd捆绑| 国产情侣一区在线| 在线日韩第一页| 青青草av在线播放| 成人性视频免费网站| 在线免费观看成人网| 欧美xo影院| 亚洲精品在线电影| 草视频在线观看| 精品制服美女丁香| 日韩av电影免费观看| 最近高清中文在线字幕在线观看1| 欧美一区二区日韩| 网站永久看片免费| 日韩精品电影一区亚洲| 欧美理论一区二区| 亚洲伊人av| 亚洲精品国产精品国自产在线| 538任你躁在线精品视频网站| 青青草国产成人av片免费| 欧美精品一区二区三区四区五区| 欧产日产国产精品视频| 精品国产123| 久久久精品视频在线| 国产综合成人久久大片91| 一区精品视频| 国产精品1区| 精品久久国产精品| 国产露脸91国语对白| 中文字幕一区二区三区在线播放| 日本黄大片一区二区三区| 欧美色婷婷久久99精品红桃| 国产精品久久久久av| 国产午夜视频在线观看| 欧美性大战xxxxx久久久| 免费人成又黄又爽又色| 日日骚欧美日韩| 日韩中文字幕av在线| 成人国产激情| xxxxx91麻豆| 国产理论片在线观看| 亚洲精品免费在线| 成年女人免费视频| 亚洲中午字幕| 婷婷久久伊人| 国产 日韩 欧美| 久久99久久久久久久噜噜| 欧美熟女一区二区| 色香色香欲天天天影视综合网| 亚洲人成人无码网www国产| 天堂蜜桃91精品| 亚洲精品一卡二卡三卡四卡| 亚洲欧美在线综合| 久久久精品国产网站| 黄片毛片在线看| 欧美性猛交xxxx免费看| 人成免费在线视频| 国产一区二区精品久久99| 丁香六月激情网| 偷窥自拍亚洲色图精选| 国产精品视频永久免费播放| 国产日产一区二区| 亚洲第一黄色网| 中国a一片一级一片| 亚洲欧美另类在线| 污污污www精品国产网站| 久久青草久久| 亚洲欧美久久234| 成人三级毛片| 国产精品久久在线观看| 污视频免费在线观看| 亚洲视频在线免费看| 国产夫绿帽单男3p精品视频| 天天射综合影视| 女教师淫辱の教室蜜臀av软件| 成人一级黄色片| 亚洲欧美国产日韩综合| 伊人久久亚洲影院| 亚洲激情啪啪| 国产精品中文字幕制服诱惑| 国产精品久久久久久av| 波多野结衣中文在线| 一区二区三欧美| 粉嫩av一区二区夜夜嗨| 欧美日韩在线电影| 日韩精品一卡二卡| 亚洲男同性恋视频| 美女爆乳18禁www久久久久久| 国产精品中文字幕日韩精品| 天天操天天摸天天爽| 在线成人www免费观看视频| 日韩在线电影一区| 欧美中文一区| 91久久极品少妇xxxxⅹ软件| 欧美亚洲韩国| 91精品国产高清自在线| 亚洲妇熟xxxx妇色黄| 中文字幕综合在线| 日本黄在线观看| 精品久久国产97色综合| 一区二区三区播放| 色嗨嗨av一区二区三区| 97人人澡人人爽人人模亚洲| 亚洲欧洲中文日韩久久av乱码| 中国毛片在线观看| 91首页免费视频| 中国极品少妇xxxx| 国产精品123| 善良的小姨在线| 久久国产精品一区二区| 少妇人妻互换不带套| 亚洲深夜福利| www.av中文字幕| 在线成人黄色| 一卡二卡三卡视频| 欧美久久视频| 国产资源第一页| 国产精品毛片一区二区在线看| 亚洲成人第一| 欧美手机视频| 天堂av一区二区| 成人vr资源| 一区二区成人国产精品| 日本一区二区免费高清| 色综合电影网| 欧美日韩中字| 亚洲精品一区二区三| 欧美偷拍自拍| 亚洲精品中文字幕在线| 色天天久久综合婷婷女18| 亚洲高清精品中出| 欧美第十八页| 400部精品国偷自产在线观看| 婷婷综合久久| 777久久精品一区二区三区无码| 亚洲五月综合| 青青在线视频免费观看| 亚洲福利免费| 欧美亚洲另类色图| 天堂久久一区二区三区| 天天爱天天操天天干| 麻豆精品一区二区综合av| 午夜免费福利视频在线观看| 狠狠色丁香九九婷婷综合五月| 免费在线观看污网站| 国产激情视频一区二区在线观看| 可以看的av网址| 99国内精品久久| 色哟哟精品观看| 国产精品久久久久久久久图文区 | 成人性生活免费看| 久久综合一区二区| 国产99在线 | 亚洲| 成人欧美一区二区三区| 欧美精品一级片| 激情av一区二区| 亚洲精品91天天久久人人| 欧美日韩一区小说| 亚洲第一天堂网| 国产丝袜一区二区| 91女主播在线观看| 欧美激情欧美激情| 国产欧美一区二区三区精品酒店| 国产精品一区二区久久久久| 久久99成人| 欧美日韩在线高清| 亚洲精品888| 欧美在线观看成人| 九九**精品视频免费播放| 亚洲少妇18p| 国产欧美一区二区在线| 九九热精品在线观看| 色综合久久久久网| 国产青青草视频| 亚洲毛片在线观看.| 免费a级人成a大片在线观看| 久久久人成影片一区二区三区| 精品欧美一区二区三区在线观看 | 粉嫩av一区二区夜夜嗨| 在线成人一区二区| wwww亚洲| 91久久精品日日躁夜夜躁国产| 日韩精品欧美大片| www.-级毛片线天内射视视| 久久综合激情| 欧美一级片在线免费观看| 国产精品久久久久精k8| 精品在线播放视频| 日韩一区二区三区av| jizzjizz在线观看| 992tv在线成人免费观看| 成人网av.com/| 欧美国产一二三区| 亚洲第一网站| 91免费视频污| 国产精品三级在线观看| 五月天婷婷激情| 精品国产乱码久久久久久影片| 免费看a在线观看| 国产成人在线一区| 国产一区调教| 欧美视频在线第一页| 久久精品国产99国产| 香蕉视频黄色在线观看| 亚洲大片精品永久免费| 国产日韩免费视频| 国产一区二区日韩精品欧美精品| 日韩伦理在线| 国产精品久久久久av福利动漫| 性欧美欧美巨大69| 四季av一区二区三区| 欧美国产97人人爽人人喊| 精品国产乱子伦| 国产视频亚洲视频| 日韩在线伦理| 免费成人av网站| 国产精品久久久免费| 一本加勒比波多野结衣| 亚洲成人7777| 日韩中文字幕免费观看| 欧美激情国产精品| 亚洲成人偷拍| 国产911在线观看| 国产精品综合二区| 精品欧美一区二区久久久久| 欧美一区二区视频免费观看| 精品美女在线观看视频在线观看 | 欧洲杯足球赛直播| 人妻丰满熟妇av无码区app| 久久婷婷国产综合精品青草| 免费黄色网址在线| 亚洲欧洲黄色网| 国产精品高清乱码在线观看| 欧美一区少妇| 欧美bbbbb| 手机在线中文字幕| 欧美一卡2卡3卡4卡| 日本h片在线观看| 国产精品乱子乱xxxx| 国产欧美91| 天天干天天舔天天操| 精品视频一区 二区 三区| 日本在线免费播放| 亚洲一区二区自拍| 激情文学一区| 波多野结衣 在线| 在线国产电影不卡| 久久精品视频观看| 操人视频欧美| 国产精品久久久亚洲一区| 国产成人一区二区在线观看| 欧美电影一区二区三区| 午夜羞羞小视频在线观看| 国产欧美亚洲日本| 日韩综合小视频| 国产又黄又爽又无遮挡| 亚洲精品97久久| 国产福利亚洲| 男女啪啪免费观看| 91网站黄www| 一区二区日韩在线观看| 久久久女人电视剧免费播放下载| 国产精品一区二区av交换| 三日本三级少妇三级99| 亚洲风情在线资源站| 波多野结衣一区二区| 91美女片黄在线观看游戏| 亚洲精选在线| 国产黄a三级三级| 亚洲第一免费播放区| www.一区| 欧美日韩二三区| 自拍偷拍欧美精品| 视频三区在线观看| 91色琪琪电影亚洲精品久久| 999亚洲国产精| 国产美女网站视频| 亚洲黄色av女优在线观看| 欧美黄页免费| 91精品91久久久中77777老牛| 国产精品国产三级国产| 日本成人动漫在线观看| 国产欧美精品日韩| 亚洲综合日韩| 欧美黑人性猛交xxx| 亚洲热线99精品视频| 亚洲一区二区三区在线免费| 日韩av手机版| 欧美日韩免费在线| 天堂av最新在线| 亚洲精品中字|