青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Fork me on GitHub
隨筆 - 215  文章 - 13  trackbacks - 0
<2018年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789


專注即時通訊及網游服務端編程
------------------------------------
Openresty 官方模塊
Openresty 標準模塊(Opm)
Openresty 三方模塊
------------------------------------
本博收藏大部分文章為轉載,并在文章開頭給出了原文出處,如有再轉,敬請保留相關信息,這是大家對原創作者勞動成果的自覺尊重!!如為您帶來不便,請于本博下留言,謝謝配合。

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

相冊

Awesome

Blog

Book

GitHub

Link

搜索

  •  

積分與排名

  • 積分 - 219795
  • 排名 - 117

最新評論

閱讀排行榜

Lua 中實現 protobuf 序列化,反序列化
https://blog.csdn.net/fanyun7654/article/details/52596000

Protobuf 官方并沒有 Lua版本,然后網易的程序猿開發出了 protoc-gen-lua ,可以讓我們將 Proto 文件轉成 lua 腳本在 Lua中使用,下面是詳細的編譯、安裝、使用教程。文中用到的代碼、工具都有百度網盤下載。

網盤下載地址: http://pan.baidu.com/s/1bo8Ufd9  

1、首先我們需要安裝Python2.7,下載地址:

[html] view plain co
默認安裝到C盤


把安裝目錄添加到環境變量中,然后打開命令行 控制臺,輸入命令

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. python  

如果提示 命令不存在,則說明環境變量沒有設置正確,如果是如下圖,說明設置成功  

ame.com.cn

2、下載并編譯 Luajit 2.0.4 ,

下載后解壓,找到 LuaJIT-2.0.4/src  目錄,其中有一個批處理文件 msvcbuild.bat ,這是在 Windows系統的編譯工具。

在開始菜單 - 所有應用中的 Visual Studio 201x 中找到 Visual Studio Tools,打開 VS201x 開發人員命令提示,切換到 LuaJIT-2.0.4/src 目錄,執行命令

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. msvcbuild.bat  

開始編譯 Luajit 2.0.4


像下圖 出現 Successfully built LuaJIT for Windows/x86  說明編譯成功


本文轉自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

到 LuaJIT-2.0.4\src 目錄中尋找  lua51.dll  lua51.lib  luajit.exe 這三個文件是否存在,如果上面編譯成功,那這三個文件是一定有的。


3、下載并編譯 protobuf-2.4.1 

在 protobuf-2.4.1\vsprojects 目錄中打開 protobuf.sln ,如下圖



在 Visual Studio 中將 下圖中 紅框 中的 test 項目 從項目中移除,要來沒用。


刪除后如下圖


項目一個一個編譯,不要一起編譯。

首先來編譯 libprotobuf 項目肯定會出錯。提示如下錯誤


原因是Protobuf 中沒有添加對應的頭文件,在項目中 搜索打開 common.h ,添加對應頭文件,如下圖:


再次編譯,就可以編譯成功。


然后編譯 第二個項目 libprotobuf-lite 。不會出錯。


然后再編譯 第三個項目 libprotoc 。肯定會出錯,如下圖  



雙擊定位錯誤,或者打開 command_line_interface.cc ,到913行 ,修改為如下圖



再次編譯,即可成功。


最后編譯第四個 項目 protoc 。編譯成功

然后到 protobuf-2.4.1\vsprojects\Debug 目錄中找到生成的 4 個文件,如下圖紅框中的文件



這4個文件會在 編譯 protoc-gen-lua的時候用到。


編譯成功后,到 protobuf-2.4.1\Python 文件夾中執行命令

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. python setup.py install  

4、下載并 編譯安裝 protoc-gen-lua ,   

下載解壓后,打開 目錄,如下圖有三個文件夾


在 plugin 目錄 創建 批處理文件 protoc-gen-lua.bat  , 內容如下

[csharp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. @python "%~dp0protoc-gen-lua"  

然后將 上一步 編譯 protobuf-2.4.1 中生成的 protoc.exe 拷貝到  protoc-gen-lua-master 目錄,如下圖


然后在 protoc-gen-lua-master 目錄下創建批處理文件  buildproto.bat ,內容如下

[csharp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. rem 切換到.proto協議所在的目錄  
  2. cd  protobuf\luascript  
  3. rem 將當前文件夾中的所有協議文件轉換為lua文件  
  4. for %%i in (*.proto) do (    
  5. echo %%i  
  6. "..\..\protoc.exe" --plugin=protoc-gen-lua="..\..\plugin\protoc-gen-lua.bat" --lua_out=. %%i  
  7.   
  8. )  
  9. echo end  
  10. pause  

這個批處理的作用是:先進入到一個文件夾,然后將該文件夾中的 proto  文件 生成 lua 文件。 我這里是進入到 protoc-gen-lua-master\protobuf\luascript 。

所以我在 protobuf 目錄下新建 目錄 luascript   ,在該目錄進行 proto 轉換 lua 。如果需要在其它目錄進行,要把上面批處理的內容修改目錄為自己想要的。


好,下面來測試一下。

在 protoc-gen-lua-master\example  目錄下有一個測試的 proto 文件 person.proto ,把它拷貝到  luascript 文件夾。


然后 返回執行上面創建的批處理文件 buildproto.bat 。 本文轉自http://blog.csdn.net/huutu http://www.thisisgame.com.cn


生成成功,到  luascript 中查看,看到生成了對應的 lua 文件 person_pb.lua 。




5、編寫工程測試 生成的 protobuf lua 文件

新建一個空項目,把 protoc-gen-lua-master\protobuf\pb.c  加入到項目中。


在 main.cpp 中添加初始化 Lua 以及初始化 proto-lua 的代碼

[cpp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. #ifdef _WIN32  
  2. #include<windows.h>  
  3. #endif  
  4.   
  5. extern "C"  
  6. {  
  7. #include <lua.h>    
  8. #include <lualib.h>    
  9. #include <lauxlib.h>    
  10. int luaopen_pb(lua_State *L);  
  11. }  
  12.   
  13.   
  14. int main(int argc, char* argv[])  
  15. {  
  16.   
  17.     lua_State *L = lua_open();  
  18.     luaL_openlibs(L);  
  19.     luaopen_pb(L);  
  20.     luaL_dofile(L, "main.lua");  
  21.     lua_pcall(L, 0, LUA_MULTRET, 0);  
  22.     lua_close(L);  
  23. #ifdef _WIN32  
  24.     system("pause");  
  25. #endif  
  26.     return 0;  
  27. }  


設置 頭文件引用路徑為  LuaJIT-2.0.4\src 目錄

設置鏈接器附加庫目錄為 LuaJIT-2.0.4\src 目錄

設置鏈接器附加依賴項為 lua5.1.4.lib 

然后編譯,肯定會報錯。。如下圖



需要修改 pb.c 的開始部分代碼如下

就是用 宏定義 來判斷,在Windows 系統下不引用 endian.h 這個文件。

再次編譯,肯定成功。

在上面的代碼中,我們加載了一個 lua 腳本文件 main.lua 。

我們在項目目錄中新建 main.lua 并添加如下代碼

[cpp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. package.path = package.path .. ';./protobuf/?.lua;./protobuf/luascript/?.lua'    
  2.   
  3. require "Person_pb"  
  4.   
  5. local msg = Person_pb.Person()  
  6. msg.id = 100  
  7. msg.name = "foo"  
  8. msg.email = "bar"  
  9.   
  10. local pb_data = msg:SerializeToString()  -- Parse Example  
  11.   
  12. print("create:", msg.id, msg.name, msg.email, pb_data)  
  13.   
  14. local msg1 = Person_pb.Person()  
  15. msg1:ParseFromString(pb_data)  
  16. print("parser:", msg1.id, msg1.name, msg1.email, pb_data)   

在 lua 代碼里面,我們 測試了 對 person 的序列化 和 反序列化 。


還記得之前生成的 person_pb.lua 文件嗎?在 protoc-gen-lua-master\protobuf\luascript 目錄里。

我們把整個 protoc-gen-lua-master\protobuf 目錄拷貝到測試項目 目錄 里來。因為 main.lua 中要引用這些 lua 文件。


然后運行測試項目


序列化 和 反序列化 測試成功

測試工程下載

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. http://pan.baidu.com/s/1ntvlBp3  


至此, protoc-gen-lua 編譯 測試使用完畢

在lua環境中使用protobuf

https://blog.csdn.net/mergerly/article/details/16350871
最近在cocos2dx的項目中,需要在LUA腳本層使用protobuf協議。官方已經推出了很多種語言的版本。但唯獨LUA版本不全。于是開始研究protobuf在LUA下的實現,將完整的過程記錄了下來,希望對其它人能有所幫助。

1、下載protoc-gen-lua

可以通過HG從服務器(hg clone https://code.google.com/p/protoc-gen-lua/)上下載最新的版本。

簡單介紹一下里面的三個目錄:

example 存放的一個示例協議,

plugin 將.proto協議轉為LUA腳本需要的工具。要注意,這個工具是用PYTHON寫的,所以后面我們需要安裝PYTHON。

rotobuf這里存放了工程需要的文件。其中pb.c是C碼文件。主要是在工程中引用,也可以編譯成動態文件(.so)供LUA調用。其它LUA文件則需要引入到LUA工程中。

 

2、安裝PYTHON27。推薦是這個版本。

3、下載protobuf然后編譯出protoc.exe。

可以用SVN從服務器上(http://protobuf.googlecode.com/svn/trunk)下載最新的protobuf。我使用的是protobuf-2.4.1。

進入protobuf-2.4.1/vsprojects利用VS2010進行編譯。生成的protoc.exe放到protobuf-2.4.1/src下。如果不放,后面無法安裝python版的protobuf。

4、編譯python版本的protobuf

在protobuf-2.4.1\python下運行python setup.py build,然后再執行python setup.py install。

注意:如果第3步的protoc.exe沒有放,會出現錯誤找不到google\protobuf\compiler目錄。

 

5、制作轉換協議的批處理

在protoc-gen-lua/plugin目錄下編寫批處理:protoc-gen-lua.bat,就下面一行代碼。

///////////////////////////////////////////////////////////////////////////////////////

@python "%~dp0protoc-gen-lua"

///////////////////////////////////////////////////////////////////////////////////////

但要確保你的python命令能正常運行。否則將python.exe所在的目錄加到環境變量path中。

接著拷貝一份protoc.exe到protoc-gen-lua目錄。第3步我們已經編譯了出了protoc.exe。在協議轉換中,我們需要使用他。

在protoc-gen-lua目錄編寫批處理:buildproto.bat 來轉換協議。

  1. rem 切換到.proto協議所在的目錄  
  2. cd ../luascript  
  3. rem 將當前文件夾中的所有協議文件轉換為lua文件  
  4. for %%i in (*.proto) do (    
  5. echo %%i  
  6. "..\protobuf\protoc\protoc.exe" --plugin=protoc-gen-lua="..\protobuf\plugin\protoc-gen-lua.bat" --lua_out=. %%i  
  7.   
  8. )  
  9. echo end  
  10. pause  

請正確指定protoc.exe和protoc-gen-lua.bat相對協議目錄的路徑。

 

6、轉換協議文件

protoc-gen-lua/example目錄中,有一個協議文件person.proto,可以拿他做一下試驗,會生成一個person_pb.lua

 

7、編譯pb.c文件

protoc-gen-lua/protobuf目錄中有一個pb.c文件。我們需要用他來協助lua完成protobuf的功能。

用vs2010新建一個控制臺程序。將pb.c加入到工程中。在windows平臺下,要對pb.c做如下修改。

1)將 #include <endian.h>修改為

#ifndef _WIN32
     #include <endian.h>
#endif

避免在windows下缺失文件報錯.

2)調整struct_unpack函數前幾行為

static int struct_unpack(lua_State *L)
{
    uint8_t format = luaL_checkinteger(L, 1);
    size_t len;
    const uint8_t* buffer = (uint8_t*)luaL_checklstring(L, 2, &len);
    size_t pos = luaL_checkinteger(L, 3);
    uint8_t out[8];   

    buffer += pos;

3)在主函數前面申明pb.c的入口。

extern "C" { int luaopen_pb (lua_State *L);}   // 注意防在命名空間外的全局聲明

 

編寫主函數如下:

[html] view plain copy
  1. #include "stdafx.h"  
  2.   
  3. extern "C"{  
  4.     #include <lua.h>  
  5.     #include <lualib.h>  
  6.     #include <lauxlib.h>  
  7.     int luaopen_pb (lua_State *L);  
  8. }  
  9. int main(int argc, char* argv[])  
  10. {  
  11.       
  12.     lua_State *L = lua_open();  
  13.     luaL_openlibs(L);  
  14.     luaopen_pb(L);  
  15.     luaL_dofile(L, "main.lua");   
  16.     lua_pcall(L, 0, LUA_MULTRET, 0);  
  17.     lua_close(L);       
  18.     return 0;   
  19. }  


工程需要lua5.1.lib的接入。這個請自行編譯。

 

8、編寫main.lua。

也就是測試文件,可以參考protoc-gen-lua/example中的test.lua。

[plain] view plain copy
  1. package.path = package.path .. ';./protobuf/?.lua'  
  2.   
  3. require "person_pb"  
  4. local msg = person_pb.Person()  
  5. msg.id = 100   
  6. msg.name = "foo"   
  7. msg.email = "bar"   
  8.   
  9. local pb_data = msg:SerializeToString()  -- Parse Example  
  10. print("create:", msg.id, msg.name, msg.email, pb_data)  
  11.   
  12.   
  13. local msg = person_pb.Person()   
  14. msg:ParseFromString(pb_data)   
  15. print("parser:", msg.id, msg.name, msg.email, pb_data)  


9、測試

編譯并運行VS工程。運行目錄應該是LUA文件所在的目錄。運行結果如下:

 

 10、總結。

這里實現了,在C++中搭建lua的protobuf環境。但未實現純粹的Lua-protobuf環境。

如果需要在LUA中實現protobuf,那需要自己將pb.c編譯成dll。在linux下需要利用protoc-gen-lua/protobuf中的makefile將pb.c編譯成pb.so。

然后將pb.so或pb.dll導入到lua工程中。然后在main.lua中調用pb.c中的入口,代碼如下:

[plain] view plain copy
  1. local a = package.loadlib("pb.dll", "luaopen_pb");  
  2. a()  

 

理論上是這樣,我還沒有做詳細的測試。如果有進展,再完善本貼。

 

 轉自:http://blog.csdn.net/sunshine7858/article/details/9260671

-----------------------------------------------------------------------------------------------

下載地址:
http://code.google.com/p/protobuf/downloads/list

安裝命令
tar -xzf protobuf-2.5.0.tar.gz 
 cd protobuf-2.5.0 
 ./configure --prefix=$INSTALL_DIR 

 make  

 make check

 make install 

然后進入python目錄,

python setup.py install --prefix=$INSTALL_DIR


寫proto文件
package lm;
message Person
{
        required int32  id = 1;
        required string str = 2;
        optional int32  opt = 3;
}
保存為 testp.testpb.proto

編譯指令 
protoc -I=/home/workspace/testprob --python_out=/home/workspace/testprob /home/workspace/testprob/testp.testpb.proto

google
https://developers.google.com/protocol-buffers/docs/pythontutorial

報錯
package directory 'google/protobuf/compiler' does not exist

解決 
https://groups.google.com/forum/?fromgroups=#!topic/protobuf/YeT5RW4qCxY
python ./setup.py build
sudo python ./setup.py install

報錯
 File "/home/workspace/testprob/testp/testpb_pb2.py", line 6, in <module>
    from google.protobuf import reflection as _reflection
  File "build/bdist.linux-i686/egg/google/protobuf/reflection.py", line 68, in <module>
  File "build/bdist.linux-i686/egg/google/protobuf/internal/python_message.py"
  ImportError: cannot import name enum_type_wrapper

解決
http://code.google.com/p/protobuf/issues/detail?id=438
Log message
Fix  issue 438 : add missing 'enum_type_wrapper' to setup.py
是安裝包的一個改進文件,copy下來, 重新安裝

根據安裝目錄下的demo  自己改寫了個簡單的, 覺得它那個還是麻煩

write.py
import testpb_pb4
import sys

p = testpb_pb2.Person()

try:
  f = open(sys.argv[1], "rb")
  p.ParseFromString(f.read())
  f.close()
except IOError:
  print sys.argv[1] + ": File not found.  Creating a new file."


p.id = 32
p.str = "test"

f = open(sys.argv[1], "wb")
f.write(p.SerializeToString())
f.close()

print "write success"


編譯指令 python write.py "test"

read.py 
import sys
import testpb_pb2

if len(sys.argv) != 2:
  print "Usage:", sys.argv[0], "ADDRESS_BOOK_FILE"
  sys.exit(-1)

p = testpb_pb2.Person()

f = open(sys.argv[1], "rb")
p.ParseFromString(f.read())
f.close()

print "p.str = ",  p.str
print "p.id=", p.id

編譯指令 python read.py "test"

--------------------------------------------------------------------------------------------------------------------

LuaJIT下載:
http://luajit.org/download/LuaJIT-2.1.0-beta3.zip

.lib轉換為.a之后MinGW編譯引用(Windows平臺)
http://m.shnenglu.com/kenkao/archive/2018/06/13/215724.html

protobuf_lua及pb.dll:(建議使用mingw編譯)
http://m.shnenglu.com/Files/kenkao/protobuf_lua.zip

openresty環境直接在nginx.conf中設置lua的腳本引用路徑及庫路徑:
lua_package_path 'lua/?.lua;pb/?.lua;';
lua_package_cpath '/usr/local/lib/lua/5.1/?.so;';

posted on 2018-06-06 16:57 思月行云 閱讀(7475) 評論(1)  編輯 收藏 引用 所屬分類: Nginx\Openresty

FeedBack:
# re: Lua環境下使用Protobuf 2018-06-20 14:14 思月行云
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲欧美国产不卡| 欧美日本高清| 欧美福利在线| 麻豆精品在线视频| 欧美成人免费在线视频| 欧美国产丝袜视频| 亚洲毛片在线| 亚洲在线播放电影| 久久综合九色| 欧美日韩精品一区二区在线播放 | 欧美精品久久久久久久免费观看| 欧美激情 亚洲a∨综合| 欧美日韩精品欧美日韩精品一 | 亚洲毛片一区| 亚洲午夜久久久| 性视频1819p久久| 久久综合网hezyo| 亚洲欧洲精品天堂一级| 一本一道久久综合狠狠老精东影业| 一区二区日韩精品| 久久爱www久久做| 欧美激情亚洲国产| 国产精品女同互慰在线看| 在线日韩中文字幕| 亚洲一区二区精品视频| 免费视频一区| 亚洲无亚洲人成网站77777 | 欧美一区永久视频免费观看| 免费亚洲电影在线观看| 亚洲视频香蕉人妖| 欧美大片免费观看在线观看网站推荐 | 国产精品99久久久久久久vr| 欧美一区精品| 日韩网站免费观看| 免费欧美日韩| 极品少妇一区二区| 国产精品乱码一区二区三区| 国产在线国偷精品产拍免费yy| 国产婷婷色综合av蜜臀av| 一本综合久久| 欧美激情在线狂野欧美精品| 亚洲一区二区毛片| 欧美激情一区二区三区全黄| 国产一区二区三区最好精华液| 一区二区三区不卡视频在线观看| 久久精品日产第一区二区三区| 夜色激情一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美大片第1页| 午夜精品久久久久久久久久久久久| 欧美国产在线视频| 在线不卡免费欧美| 久久不射网站| 亚洲欧美日韩在线一区| 国产精品豆花视频| 一本一本久久a久久精品综合妖精| 欧美二区视频| 欧美成人精品在线观看| 激情欧美一区二区三区| 久久久久久久成人| 久久久久成人精品| 黄色日韩网站视频| 欧美ab在线视频| 美女精品网站| 亚洲欧洲一区二区三区| 亚洲第一精品影视| 麻豆av一区二区三区| 亚洲国产精品成人久久综合一区| 蜜臀a∨国产成人精品| 久久久久国产精品www| 激情五月婷婷综合| 久久免费偷拍视频| 久久久青草青青国产亚洲免观| 国产一区二区三区精品欧美日韩一区二区三区 | 久久成人一区| 国产精品久久久久一区二区三区 | 久久综合图片| 免费观看久久久4p| 99热免费精品| 中文久久乱码一区二区| 国产欧美日韩精品在线| 久久天堂av综合合色| 米奇777在线欧美播放| 亚洲精品久久久久久下一站 | 亚洲一区二区影院| 欧美亚洲视频| 麻豆91精品91久久久的内涵| 午夜精品久久久久久久| 国产亚洲欧美日韩日本| 久久九九99| 欧美劲爆第一页| 亚洲在线视频观看| 欧美在线欧美在线| 一区二区av| 欧美在线网址| 99re热这里只有精品免费视频| 亚洲一区在线观看免费观看电影高清| 国产精品亚洲综合一区在线观看 | 欧美一区二区三区四区在线 | 国产欧美日韩亚洲精品| 久久综合给合| 国产精品久久久久7777婷婷| 久久国产加勒比精品无码| 欧美国产日产韩国视频| 欧美一二三区在线观看| 欧美91大片| 久久久夜夜夜| 国产精品va在线| 免费成人网www| 国产精品免费区二区三区观看| 欧美成人官网二区| 国产亚洲精品久久久| 亚洲图片激情小说| 亚洲免费激情| 欧美aa国产视频| 久久在线视频| 国产视频在线观看一区| 一区二区三区三区在线| 亚洲最新在线| 欧美国产日韩一区| 欧美岛国激情| 一区在线免费| 久久不射2019中文字幕| 欧美在线影院在线视频| 欧美三级电影精品| 亚洲国产精品久久久久秋霞影院| 国产综合久久久久久| 亚洲少妇最新在线视频| 一区二区三区**美女毛片| 欧美激情视频免费观看| 亚洲电影免费| 亚洲欧洲精品天堂一级| 巨乳诱惑日韩免费av| 免费国产自线拍一欧美视频| 黑人操亚洲美女惩罚| 午夜精品网站| 久久av资源网站| 国产在线不卡视频| 久久精品免费电影| 久久免费精品视频| 伊人色综合久久天天五月婷| 久久国产加勒比精品无码| 久久se精品一区精品二区| 国产午夜久久久久| 久久av资源网站| 久久夜色精品国产欧美乱| 极品裸体白嫩激情啪啪国产精品| 欧美在线观看视频一区二区三区| 欧美日韩午夜| 欧美有码在线观看视频| 国产精品看片你懂得| 午夜精品美女久久久久av福利| 西西裸体人体做爰大胆久久久| 国产九九精品视频| 久久精品一区四区| 美女在线一区二区| 日韩视频三区| 国产精品视频精品视频| 欧美在线精品免播放器视频| 欧美成人精品影院| 一区二区三区视频在线播放| 国产精品久久久久久久久动漫| 亚洲欧美激情诱惑| 久久综合九色综合网站| 亚洲精品久久久久久久久久久 | 欧美顶级少妇做爰| 一区二区三区国产精华| 国产精品久久久久天堂| 久久综合色播五月| 一区二区三区视频免费在线观看| 欧美在线免费看| 亚洲国产精品传媒在线观看 | 欧美激情第三页| 午夜精品久久久久久久蜜桃app| 久久亚洲色图| 一区二区三区国产| 韩国女主播一区| 欧美日韩中文| 久久久亚洲人| 亚洲一区成人| 欧美激情一区二区久久久| 中文一区在线| 亚洲国产精品99久久久久久久久| 欧美日精品一区视频| 久热这里只精品99re8久| 亚洲一级在线观看| 91久久久在线| 鲁大师成人一区二区三区| 亚洲欧美成人网| 日韩视频久久| 永久免费毛片在线播放不卡| 国产精品久久久久久久久| 欧美高清在线观看| 久久伊人一区二区| 亚洲免费中文| 在线综合视频| 亚洲精品一二| 亚洲国产99精品国自产| 久久伊人亚洲| 欧美自拍偷拍|