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

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://www.shnenglu.com/kenkao/archive/2018/06/13/215724.html

protobuf_lua及pb.dll:(建議使用mingw編譯)
http://www.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>
              狠狠狠色丁香婷婷综合久久五月| 欧美中文字幕第一页| 欧美成人激情在线| 午夜欧美电影在线观看| 欧美成人一区二区三区| 欧美在线亚洲综合一区| 国产婷婷色一区二区三区| 欧美专区18| 久久嫩草精品久久久精品| 亚洲激情在线视频| 亚洲人成亚洲人成在线观看图片| 欧美成人国产一区二区| 亚洲一区二区高清| 欧美在线视频在线播放完整版免费观看 | 老色鬼久久亚洲一区二区| 亚洲欧洲三级| 亚洲一区美女视频在线观看免费| 国产午夜精品在线观看| 欧美国产国产综合| 国产精品免费网站| 欧美黑人在线播放| 国产精品chinese| 久热成人在线视频| 国产精品啊啊啊| 久久久久久婷| 欧美视频免费在线观看| 美日韩在线观看| 欧美视频在线看| 狂野欧美激情性xxxx欧美| 欧美日韩成人精品| 可以免费看不卡的av网站| 欧美日韩一区综合| 欧美国产先锋| 国产性色一区二区| 99国产精品自拍| 在线观看一区视频| 性做久久久久久久免费看| 一本一道久久综合狠狠老精东影业| 亚洲在线电影| 中日韩美女免费视频网址在线观看 | 99精品视频免费全部在线| 黄色av日韩| 亚洲欧美日韩精品久久奇米色影视| 亚洲欧洲另类| 久久综合国产精品| 久久免费高清| 国产亚洲成av人在线观看导航 | 久久精品道一区二区三区| 亚洲一区观看| 欧美日韩国产不卡| 亚洲国产成人tv| 在线观看不卡av| 欧美一级片久久久久久久| 亚洲欧美日韩综合aⅴ视频| 欧美电影在线免费观看网站| 久久综合五月| 一片黄亚洲嫩模| 国产精品电影网站| 欧美黄色成人网| 亚洲第一福利视频| 久久久久久9| 快射av在线播放一区| 国产三级欧美三级| 欧美一区高清| 久热精品视频在线观看一区| 激情综合自拍| 免费观看日韩av| 亚洲成色999久久网站| 在线视频观看日韩| 免费成人性网站| 欧美激情精品久久久久久久变态| 在线观看亚洲视频啊啊啊啊| 久久中文字幕一区| 亚洲黄一区二区三区| 日韩香蕉视频| 欧美日韩在线视频观看| 亚洲免费视频中文字幕| 久久久精品一区| 在线观看91久久久久久| 欧美激情视频网站| 日韩一二三区视频| 欧美自拍偷拍| 在线成人激情视频| 欧美母乳在线| 亚洲在线观看免费| 欧美va亚洲va国产综合| 亚洲日本视频| 国产精品美女www爽爽爽| 欧美一区二区三区在线观看视频| 欧美11—12娇小xxxx| 99精品欧美一区二区蜜桃免费| 欧美午夜一区| 久久国产精品电影| 亚洲精选久久| 久久精品日产第一区二区| 亚洲精品1区| 国产精品美女久久久| 久久一综合视频| 一区二区三区四区蜜桃| 美日韩丰满少妇在线观看| 亚洲桃色在线一区| 影音先锋成人资源站| 欧美视频一区二区在线观看| 久久精品视频在线看| 亚洲精品国产精品乱码不99| 久久九九国产精品| 亚洲午夜激情免费视频| 伊人狠狠色j香婷婷综合| 欧美日韩一区二区三区在线视频| 亚洲欧美在线磁力| 亚洲久色影视| 欧美大学生性色视频| 欧美在线观看视频| 正在播放欧美一区| 亚洲二区免费| 国产一区二区三区久久久| 欧美另类在线播放| 久久综合给合| 久久精品国产免费观看| 亚洲一区三区电影在线观看| 亚洲福利视频网站| 美女尤物久久精品| 久久高清国产| 亚洲欧美日韩国产一区二区三区 | 欧美国产免费| 久久久精品欧美丰满| 亚洲欧美电影院| 亚洲素人在线| 99亚洲一区二区| 99国产精品久久久久久久| 欧美91大片| 另类av导航| 久久久久国产一区二区三区四区| 亚洲自拍电影| 亚洲少妇一区| 中国女人久久久| 亚洲天堂av高清| 正在播放亚洲| 亚洲夜间福利| 亚洲欧美日韩在线播放| 亚洲欧美一区二区三区极速播放| 一区二区三区久久精品| 一本色道久久88精品综合| 99精品国产高清一区二区| 亚洲免费成人| 亚洲天堂久久| 先锋资源久久| 久久精品国产免费看久久精品| 久久成人18免费网站| 欧美一区二区三区四区在线 | 亚洲精品欧美激情| 99视频精品在线| 亚洲伊人网站| 欧美影院一区| 男同欧美伦乱| 欧美天天视频| 国产日本欧美在线观看| 精品av久久707| 亚洲三级毛片| 亚洲欧美国产一区二区三区| 欧美专区第一页| 欧美不卡在线视频| 亚洲麻豆国产自偷在线| 亚洲一区二区在线看| 久久精品水蜜桃av综合天堂| 欧美成人免费大片| 国产精品女主播| 亚洲国产99| 亚洲影院高清在线| 久久―日本道色综合久久| 亚洲盗摄视频| 亚洲欧美国产视频| 麻豆精品国产91久久久久久| 欧美日韩精品一区二区在线播放| 国产精品专区第二| 亚洲人午夜精品免费| 欧美一区二区三区视频| 欧美激情a∨在线视频播放| av成人国产| 久久永久免费| 国产乱理伦片在线观看夜一区| 亚洲电影一级黄| 欧美呦呦网站| 亚洲国产另类精品专区| 午夜精品短视频| 欧美精品综合| 曰本成人黄色| 欧美专区在线观看一区| 91久久在线| 久久网站热最新地址| 国产精品久久久久秋霞鲁丝| 91久久精品国产91久久性色| 久久不见久久见免费视频1| 亚洲国产乱码最新视频| 久久久一区二区| 国产精品视频你懂的| 一区二区三区四区五区在线| 欧美aaaaaaaa牛牛影院| 久久成人亚洲| 国产欧美 在线欧美|