国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Spring整合Netty、WebSocket的互聯(lián)網(wǎng)聊天系統(tǒng)

共 14486字,需瀏覽 29分鐘

 ·

2020-10-05 16:13

作者:Kanarien
來源:SegmentFault 思否社區(qū)




前言


最近一段時間在學(xué)習(xí)Netty網(wǎng)絡(luò)框架,又趁著計算機網(wǎng)絡(luò)的課程設(shè)計,決定以Netty為核心,以WebSocket為應(yīng)用層通信協(xié)議做一個互聯(lián)網(wǎng)聊天系統(tǒng),整體而言就像微信網(wǎng)頁版一樣,但考慮到這個聊天系統(tǒng)的功能非常多,因此只打算實現(xiàn)核心的聊天功能,包括單發(fā)、群發(fā)、文件發(fā)送,然后把項目與Spring整合做成開源、可拓展的方式,給大家參考、討論、使用,歡迎大家的指點。


關(guān)于Netty


Netty 是一個利用 Java 的高級網(wǎng)絡(luò)的能力,隱藏其背后的復(fù)雜性而提供一個易于使用的 API 的客戶端/服務(wù)器框架。


這里借用《Essential Netty In Action》的一句話來簡單介紹Netty,詳細(xì)的可參考閱讀該書的電子版


  • Essential Netty in Action 《Netty 實戰(zhàn)(精髓)》:
    https://legacy.gitbook.com/book/waylau/essential-netty-in-action/details

關(guān)于WebSocket通信協(xié)議


簡單說一下WebSocket通信協(xié)議,WebSocket是為了解決HTTP協(xié)議中通信只能由客戶端發(fā)起這個弊端而出現(xiàn)的,WebSocket基于HTTP5協(xié)議,借用HTTP進(jìn)行握手、升級,能夠做到輕量的、高效的、雙向的在客戶端和服務(wù)端之間傳輸文本數(shù)據(jù)。詳細(xì)可參考以下文章:


  • WebSocket 是什么原理?為什么可以實現(xiàn)持久連接?:
    https://www.zhihu.com/question/20215561
  • WebSocket 教程 - 阮一峰的網(wǎng)絡(luò)日志:
    http://www.ruanyifeng.com/blog/2017/05/websocket.html



1. 技術(shù)準(zhǔn)備


  • 操作平臺:Windows 7, 64bit 8G
  • IDE:MyEclipse 2016
  • JDK版本:1.8.0_121
  • 瀏覽器:谷歌瀏覽器、360瀏覽器(極速模式)(涉及網(wǎng)頁前端設(shè)計,后端開發(fā)表示很苦悶)
  • 涉及技術(shù):
    • Netty 4
    • WebSocket + HTTP
    • Spring MVC + Spring
    • JQuery
    • Bootstrap 3 + Bootstrap-fileinput
    • Maven 3.5
    • Tomcat 8.0



2. 整體說明


2.1 設(shè)計思想


整個通信系統(tǒng)以Tomcat作為核心服務(wù)器運行,其下另開一個線程運行Netty WebSocket服務(wù)器,Tomcat服務(wù)器主要處理客戶登錄、個人信息管理等的HTTP類型請求(通常的業(yè)務(wù)類型),端口為8080,Netty WebSockt服務(wù)器主要處理用戶消息通信的WebSocket類型請求,端口為3333。用戶通過瀏覽器登錄后,瀏覽器會維持一個Session對象(有效時間30分鐘)來保持登錄狀態(tài),Tomcat服務(wù)器會返回用戶的個人信息,同時記錄在線用戶,根據(jù)用戶id建立一條WebSocket連接并保存在后端以便進(jìn)行實時通信。當(dāng)一個用戶向另一用戶發(fā)起通信,服務(wù)器會根據(jù)消息內(nèi)容中的對話方用戶id,找到保存的WebSocket連接,通過該連接發(fā)送消息,對方就能夠收到即時收到消息。當(dāng)用戶注銷或退出時,釋放WebSocket連接,清空Session對象中的登錄狀態(tài)。


事實上Netty也可以用作一個HTTP服務(wù)器,而這里使用Spring MVC處理HTTP請求是出于熟悉的緣故,也比較接近傳統(tǒng)開發(fā)的方式。


2.2 系統(tǒng)結(jié)構(gòu)


系統(tǒng)采用B/S(Browser/Server),即瀏覽器/服務(wù)器的結(jié)構(gòu),主要事務(wù)邏輯在服務(wù)器端(Server)實現(xiàn)。借鑒MVC模式的思想,從上至下具體又分為視圖層(View)、控制層(Controller)、業(yè)務(wù)層(Service)、模型層(Model)、數(shù)據(jù)訪問層(Data Access)


2.3 項目結(jié)構(gòu)


項目后端結(jié)構(gòu):



項目前端結(jié)構(gòu):



2.4 系統(tǒng)功能模塊


系統(tǒng)只包括兩個模塊:登錄模塊和聊天管理模塊。


  • 登錄模塊:既然作為一個系統(tǒng),那么登錄的角色認(rèn)證是必不可少的,這里使用簡單、傳統(tǒng)的Session方式維持登錄狀態(tài),當(dāng)然也有對應(yīng)的注銷功能,但這里的注銷除了清空Session對象,還要釋放WebSocket連接,否則造成內(nèi)存泄露。
  • 聊天管理模塊:系統(tǒng)的核心模塊,這部分主要使用Netty框架實現(xiàn),功能包括信息、文件的單條和多條發(fā)送,也支持表情發(fā)送。
  • 其他模塊:如好友管理模塊、聊天記錄管理、注冊模塊等,我并沒有實現(xiàn),有興趣的話可以自行實現(xiàn),與傳統(tǒng)的開發(fā)方式類似。


到這里,可能會有人出現(xiàn)疑問了,首先是前面的涉及技術(shù)中沒有ORM框架(Mybatis或Hibernate),這里又沒有實現(xiàn)好友管理的功能,那用戶如何確定自己的好友并發(fā)送信息呢?


其實,這里我在dao層的實現(xiàn)里并沒有連接數(shù)據(jù)庫,而是用硬編碼的方式固定好系統(tǒng)的用戶以及用戶的好友表、群組表,之所以這么做是因為當(dāng)初考慮到這個課程設(shè)計要是連接數(shù)據(jù)庫就太麻煩了光是已有的模塊(包括前后端)就差不多3k行代碼了,時間上十分劃不來,于是就用了硬編碼的方式偷懶,后面會再說明系統(tǒng)用戶的情況。


2.5 用戶狀態(tài)轉(zhuǎn)換圖


由于本系統(tǒng)涉及多個用戶狀態(tài),有必要進(jìn)行說明,下面給出本系統(tǒng)的用戶狀態(tài)轉(zhuǎn)換圖。



2.6 系統(tǒng)界面


系統(tǒng)聊天界面如下:





3. 核心編碼


3.1 Netty WebSocket服務(wù)端


3.1.1 Netty服務(wù)器啟動與關(guān)閉


不得不說的是,當(dāng)關(guān)閉Tomcat服務(wù)器時,也要釋放Netty相關(guān)資源,否則會造成內(nèi)存泄漏,關(guān)閉方法如下面的close(),如果只是使用shutdownGracefully()方法的話,關(guān)閉時會報內(nèi)存泄露Memory Leak異常(但I(xiàn)DE可能來不及輸出到控制臺)


/**
?*?描述:?Netty?WebSocket服務(wù)器
?*??????使用獨立的線程啟動
?*?@author?Kanarien
?*?@version?1.0
?*?@date?2018年5月18日?上午11:22:51
?*/
public?class?WebSocketServer?implements?Runnable{

????private?final?Logger?logger?=?LoggerFactory.getLogger(WebSocketServer.class);

????@Autowired
????private?EventLoopGroup?bossGroup;
????@Autowired
????private?EventLoopGroup?workerGroup;
????@Autowired
????private?ServerBootstrap?serverBootstrap;

????private?int?port;
????private?ChannelHandler?childChannelHandler;
????private?ChannelFuture?serverChannelFuture;

??//?構(gòu)造方法少了會報錯
????public?WebSocketServer()?{}

????@Override
????public?void?run()?{
????????build();
????}

????/**
?????*?描述:啟動Netty Websocket服務(wù)器
?????*/
????public?void?build()?{
????????try?{
??????long?begin?=?System.currentTimeMillis();
????serverBootstrap.group(bossGroup,?workerGroup)?//boss輔助客戶端的tcp連接請求??worker負(fù)責(zé)與客戶端之前的讀寫操作
?????????????.channel(NioServerSocketChannel.class)?//配置客戶端的channel類型
?????????????.option(ChannelOption.SO_BACKLOG,?1024)?//配置TCP參數(shù),握手字符串長度設(shè)置
?????????????.option(ChannelOption.TCP_NODELAY,?true)?//TCP_NODELAY算法,盡可能發(fā)送大塊數(shù)據(jù),減少充斥的小塊數(shù)據(jù)
?????????????.childOption(ChannelOption.SO_KEEPALIVE,?true)//開啟心跳包活機制,就是客戶端、服務(wù)端建立連接處于ESTABLISHED狀態(tài),超過2小時沒有交流,機制會被啟動
?????????????.childOption(ChannelOption.RCVBUF_ALLOCATOR,?new?FixedRecvByteBufAllocator(592048))//配置固定長度接收緩存區(qū)分配器
?????????????.childHandler(childChannelHandler);?//綁定I/O事件的處理類,WebSocketChildChannelHandler中定義
????long?end?=?System.currentTimeMillis();
????????????logger.info("Netty?Websocket服務(wù)器啟動完成,耗時?"?+?(end?-?begin)?+?"?ms,已綁定端口?"?+?port?+?"?阻塞式等候客戶端連接");

????????????serverChannelFuture?=?serverBootstrap.bind(port).sync();
????????}?catch?(Exception?e)?{
????????????logger.info(e.getMessage());
????????????bossGroup.shutdownGracefully();
????????????workerGroup.shutdownGracefully();
????????????e.printStackTrace();
????????}

????}

??/**
?????*?描述:關(guān)閉Netty Websocket服務(wù)器,主要是釋放連接
?????*?????連接包括:服務(wù)器連接serverChannel,
?????*?????客戶端TCP處理連接bossGroup,
?????*?????客戶端I/O操作連接workerGroup
?????*
?????*?????若只使用
?????*?????????bossGroupFuture?=?bossGroup.shutdownGracefully();
?????*?????????workerGroupFuture?=?workerGroup.shutdownGracefully();
?????*?????會造成內(nèi)存泄漏。
?????*/
????public?void?close(){
????????serverChannelFuture.channel().close();
????????Future?bossGroupFuture?=?bossGroup.shutdownGracefully();
????????Future?workerGroupFuture?=?workerGroup.shutdownGracefully();

????????try?{
????????????bossGroupFuture.await();
????????????workerGroupFuture.await();
????????}?catch?(InterruptedException?ignore)?{
????????????ignore.printStackTrace();
????????}
????}

????public?ChannelHandler?getChildChannelHandler()?{
????????return?childChannelHandler;
????}

????public?void?setChildChannelHandler(ChannelHandler?childChannelHandler)?{
????????this.childChannelHandler?=?childChannelHandler;
????}

????public?int?getPort()?{
????????return?port;
????}

????public?void?setPort(int?port)?{
????????this.port?=?port;
????}

}


3.1.2 Netty服務(wù)器處理鏈


獨立出處理器鏈類,方便修改與注入,免得混在一起顯得混亂。


@Component
public?class?WebSocketChildChannelHandler?extends?ChannelInitializer{

????@Resource(name?=?"webSocketServerHandler")
????private?ChannelHandler?webSocketServerHandler;

????@Resource(name?=?"httpRequestHandler")
????private?ChannelHandler?httpRequestHandler;

????@Override
????protected?void?initChannel(SocketChannel?ch)?throws?Exception?{
????????ch.pipeline().addLast("http-codec",?new?HttpServerCodec());?//?HTTP編碼解碼器
????????ch.pipeline().addLast("aggregator",?new?HttpObjectAggregator(65536));?//?把HTTP頭、HTTP體拼成完整的HTTP請求
????????ch.pipeline().addLast("http-chunked",?new?ChunkedWriteHandler());?//?分塊,方便大文件傳輸,不過實質(zhì)上都是短的文本數(shù)據(jù)
????????ch.pipeline().addLast("http-handler",?httpRequestHandler);
????????ch.pipeline().addLast("websocket-handler",webSocketServerHandler);
????}

}


3.1.3 Netty服務(wù)器HTTP請求處理器


值得一提的是,當(dāng)在處理鏈中使用Spring注入處理器的bean的時候,如果處理器類不使用@Sharable標(biāo)簽的話,會出現(xiàn)錯誤。如果不使用Spring注入bean的方式,那么應(yīng)該new一個新的處理器對象,如ch.pipeline().addLast("http-handler", new HttpRequestHandler())。另外,判斷HTTP請求還是WebSocket請求的方式稍微不太優(yōu)雅,但我按照《Essential Netty in Action》中的方法去試,結(jié)果有問題的,只好用下面的if語句判斷。


@Component
@Sharable
public?class?HttpRequestHandler?extends?SimpleChannelInboundHandler?{

????/**
?????*?描述:讀取完連接的消息后,對消息進(jìn)行處理。
?????*?這里僅處理HTTP請求,WebSocket請求交給下一個處理器。
?????*/
????@Override
????protected?void?channelRead0(ChannelHandlerContext?ctx,?Object?msg)?throws?Exception?{
????????if?(msg?instanceof?FullHttpRequest)?{
????????????handleHttpRequest(ctx,?(FullHttpRequest)?msg);
????????}?else?if?(msg?instanceof?WebSocketFrame)?{
????????????ctx.fireChannelRead(((WebSocketFrame)?msg).retain());
????????}
????}

????/**
?????*?描述:處理Http請求,主要是完成HTTP協(xié)議到Websocket協(xié)議的升級
?????*?@param?ctx
?????*?@param?req
?????*/
????private?void?handleHttpRequest(ChannelHandlerContext?ctx,?FullHttpRequest?req)?{
????????if?(!req.decoderResult().isSuccess())?{
????????????sendHttpResponse(ctx,?req,
????????????????????new?DefaultFullHttpResponse(HttpVersion.HTTP_1_1,?HttpResponseStatus.BAD_REQUEST));
????????????return;
????????}

????????WebSocketServerHandshakerFactory?wsFactory?=?new?WebSocketServerHandshakerFactory(
????????????????"ws:/"?+?ctx.channel()?+?"/websocket",?null,?false);
????????WebSocketServerHandshaker?handshaker?=?wsFactory.newHandshaker(req);
????????Constant.webSocketHandshakerMap.put(ctx.channel().id().asLongText(),?handshaker);//?保存握手類到全局變量,方便以后關(guān)閉連接

????????if?(handshaker?==?null)?{
????????????WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(ctx.channel());
????????}?else?{
????????????handshaker.handshake(ctx.channel(),?req);
????????}
????}

????private?void?sendHttpResponse(ChannelHandlerContext?ctx,?FullHttpRequest?req,?DefaultFullHttpResponse?res)?{
????????//?返回應(yīng)答給客戶端
????????if?(res.status().code()?!=?200)?{
????????????ByteBuf?buf?=?Unpooled.copiedBuffer(res.status().toString(),?CharsetUtil.UTF_8);
????????????res.content().writeBytes(buf);
????????????buf.release();
????????}
????????//?如果是非Keep-Alive,關(guān)閉連接
????????boolean?keepAlive?=?HttpUtil.isKeepAlive(req);
????????ChannelFuture?f?=?ctx.channel().writeAndFlush(res);
????????if?(!keepAlive)?{
????????????f.addListener(ChannelFutureListener.CLOSE);
????????}
????}

????/**
?????*?描述:異常處理,關(guān)閉channel
?????*/
????@Override
????public?void?exceptionCaught(ChannelHandlerContext?ctx,?Throwable?cause)?throws?Exception?{
????????cause.printStackTrace();
????????ctx.close();
????}
}


3.1.4 Netty服務(wù)器WebSocket請求處理器


考慮到規(guī)范性與可維護(hù)性,switch語句中的case常量應(yīng)該放在常量類中聲明比較好。另外說下群發(fā)的邏輯(屬于業(yè)務(wù)邏輯,這里沒有給出代碼),群發(fā)也就是在一個群中發(fā)言,后端會掃描群中在線的用戶,逐一發(fā)送信息。用戶的WebSocket連接(即ChannelHandlerContext對象),會保存在全局變量onlineUserMap中,以用戶id作鍵,方便操作連接。關(guān)于表情的發(fā)送邏輯,與單發(fā)邏輯相同,不同的是發(fā)送內(nèi)容為對應(yīng)的img標(biāo)簽字符串。


@Component
@Sharable
public?class?WebSocketServerHandler?extends?SimpleChannelInboundHandler?{

????private?static?final?Logger?LOGGER?=?LoggerFactory.getLogger(WebSocketServerHandler.class);

????@Autowired
????private?ChatService?chatService;

????/**
?????*?描述:讀取完連接的消息后,對消息進(jìn)行處理。
?????*??????這里主要是處理WebSocket請求
?????*/
????@Override
????protected?void?channelRead0(ChannelHandlerContext?ctx,?WebSocketFrame?msg)?throws?Exception?{
????????handlerWebSocketFrame(ctx,?msg);
????}

????/**
?????*?描述:處理WebSocketFrame
?????*?@param?ctx
?????*?@param?frame
?????*?@throws?Exception
?????*/
????private?void?handlerWebSocketFrame(ChannelHandlerContext?ctx,?WebSocketFrame?frame)?throws?Exception?{
????????//?關(guān)閉請求
????????if?(frame?instanceof?CloseWebSocketFrame)?{
????????????WebSocketServerHandshaker?handshaker?=
????????????????????Constant.webSocketHandshakerMap.get(ctx.channel().id().asLongText());
????????????if?(handshaker?==?null)?{
????????????????sendErrorMessage(ctx,?"不存在的客戶端連接!");
????????????}?else?{
????????????????handshaker.close(ctx.channel(),?(CloseWebSocketFrame)?frame.retain());
????????????}
????????????return;
????????}
????????//?ping請求
????????if?(frame?instanceof?PingWebSocketFrame)?{
????????????ctx.channel().write(new?PongWebSocketFrame(frame.content().retain()));
????????????return;
????????}
????????//?只支持文本格式,不支持二進(jìn)制消息
????????if?(!(frame?instanceof?TextWebSocketFrame))?{
????????????sendErrorMessage(ctx,?"僅支持文本(Text)格式,不支持二進(jìn)制消息");
????????}

????????//?客服端發(fā)送過來的消息
????????String?request?=?((TextWebSocketFrame)frame).text();
????????LOGGER.info("服務(wù)端收到新信息:"?+?request);
????????JSONObject?param?=?null;
????????try?{
????????????param?=?JSONObject.parseObject(request);
????????}?catch?(Exception?e)?{
????????????sendErrorMessage(ctx,?"JSON字符串轉(zhuǎn)換出錯!");
????????????e.printStackTrace();
????????}
????????if?(param?==?null)?{
????????????sendErrorMessage(ctx,?"參數(shù)為空!");
????????????return;
????????}

????????String?type?=?(String)?param.get("type");
????????switch?(type)?{
????????????case?"REGISTER":
????????????????chatService.register(param,?ctx);
????????????????break;
????????????case?"SINGLE_SENDING":
????????????????chatService.singleSend(param,?ctx);
????????????????break;
????????????case?"GROUP_SENDING":
????????????????chatService.groupSend(param,?ctx);
????????????????break;
????????????case?"FILE_MSG_SINGLE_SENDING":
????????????????chatService.FileMsgSingleSend(param,?ctx);
????????????????break;
????????????case?"FILE_MSG_GROUP_SENDING":
????????????????chatService.FileMsgGroupSend(param,?ctx);
????????????????break;
????????????default:
????????????????chatService.typeError(ctx);
????????????????break;
????????}
????}

????/**
?????*?描述:客戶端斷開連接
?????*/
????@Override
????public?void?channelInactive(ChannelHandlerContext?ctx)?throws?Exception?{
????????chatService.remove(ctx);
????}

????/**
?????*?異常處理:關(guān)閉channel
?????*/
????@Override
????public?void?exceptionCaught(ChannelHandlerContext?ctx,?Throwable?cause)?throws?Exception?{
????????cause.printStackTrace();
????????ctx.close();
????}


????private?void?sendErrorMessage(ChannelHandlerContext?ctx,?String?errorMsg)?{
????????String?responseJson?=?new?ResponseJson()
????????????????.error(errorMsg)
????????????????.toString();
????????ctx.channel().writeAndFlush(new?TextWebSocketFrame(responseJson));
????}

}


3.1.5 文件上傳


文件上傳的思路是先把文件上傳到服務(wù)器上,再返回給對方文件的url以及相關(guān)信息。文件上傳并沒有使用WebSocket連接來上傳,而是直接使用HTTP連接結(jié)合Spring的接口簡單的實現(xiàn)了,可自行修改實現(xiàn)使用WebSocket連接來上傳文件。另外,文件保存的路徑是http://localhost:8080/WebSocket/UploadFile,如果Tomcat端口不是8080或者想改變存儲路徑的話,請注意修改常量。


@Service
public?class?FileUploadServiceImpl?implements?FileUploadService{

????private?final?static?String?SERVER_URL_PREFIX?=?"http://localhost:8080/WebSocket/";
????private?final?static?String?FILE_STORE_PATH?=?"UploadFile";

????@Override
????public?ResponseJson?upload(MultipartFile?file,?HttpServletRequest?request)?{
????????//?重命名文件,防止重名
????????String?filename?=?getRandomUUID();
????????String?suffix?=?"";
????????String?originalFilename?=?file.getOriginalFilename();
????????String?fileSize?=?FileUtils.getFormatSize(file.getSize());
????????//?截取文件的后綴名
????????if?(originalFilename.contains("."))?{
????????????suffix?=?originalFilename.substring(originalFilename.lastIndexOf("."));
????????}
????????filename?=?filename?+?suffix;
????????String?prefix?=?request.getSession().getServletContext().getRealPath("/")?+?FILE_STORE_PATH;
????????System.out.println("存儲路徑為:"?+?prefix?+?"\\"?+?filename);
????????Path?filePath?=?Paths.get(prefix,?filename);
????????try?{
????????????Files.copy(file.getInputStream(),?filePath);
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????????return?new?ResponseJson().error("文件上傳發(fā)生錯誤!");
????????}
????????return?new?ResponseJson().success()
????????????????.setData("originalFilename",?originalFilename)
????????????????.setData("fileSize",?fileSize)
????????????????.setData("fileUrl",?SERVER_URL_PREFIX?+?FILE_STORE_PATH?+?"\\"?+?filename);
????}

????private?String?getRandomUUID()?{
????????return?UUID.randomUUID().toString().replace("-",?"");
????}

}


3.2 WebSocket客戶端


3.2.1 瀏覽器客戶端代碼


下面只展示核心的websocket連接代碼。補充說明:考慮到瀏覽器的兼容性,經(jīng)測試,建議使用谷歌瀏覽器和360瀏覽器(極速模式),火狐瀏覽器和IE11的界面有點問題。也說明一下,UI設(shè)計的排版是從網(wǎng)上找的,由修改了下,自己嘔心瀝血的用JS補充了動態(tài)功能,包括:


  • 新消息紅標(biāo)簽提醒
  • 新消息置頂
  • 客戶端保存已發(fā)聊天記錄
  • 用戶己方聊天信息靠左,接收信息靠右
  • 聊天信息框的寬度動態(tài)計算

詳細(xì)可見chatroom.js文件






4. 效果及操作演示


4.1 登錄操作


登錄入口為:

http://localhost/或?http://localhost/當(dāng)前系統(tǒng)用戶固定為9個,群組1個,包括9人用戶。


  • 用戶1 用戶名:Member001 密碼:001
  • 用戶2 用戶名:Member002 密碼:002

······

  • 用戶9 用戶名:Member009 密碼:009


4.2 聊天演示



4.3 文件上傳演示





5.補充


為了使項目具有更好的可拓展性、可讀性、可維護(hù)性,很多地方都使用Spring的Bean進(jìn)行注入,也運用了面向接口編程的思想,當(dāng)運用上Mybatis等ORM框架的時候,直接修改dao層實現(xiàn)即可,無需改動其他地方,同時也在適當(dāng)?shù)牡胤郊由狭俗⑨尅?/span>

最后附上git源碼地址:https://github.com/Kanarienvogels/Storehouse




點擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動和交流。

-?END -

瀏覽 41
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 狠狠撸在线| 国产精品HongKong麻豆| 中文字幕亞洲高清手機版第617| 在线观看黄色网| 免费电影日本黄色| 麻妃无码| 久久电影五月天| 俺来也俺也啪www色| 婷婷综合五月天| 在线观看视频无码| 国产精品被狂躁到高潮| 2020人妻中文字幕| 成人性生活一级片| 免费激情网站| 婷婷五月情| 亚州天堂网| 亚洲黄色视频免费观看| 久久久精品无码| 欧洲天堂在线视频网站| 免费黄色在线视频| 国产妞干网| 欧美色噜噜| 亚洲成人网站免费观看| 中文字幕资源在线| 日韩高清无码免费看| 国产区在线观看| 中文字幕在线观看免费高清电影| 老婆中文字幕乱码中文乱码| 久久夜色精品国产噜噜亚洲AV| 狠狠色av| 日韩啪啪片| 激情男人网| 免费无码在线观看| www.国产精品| 亚洲性爱一区二区| 久久99网站| www.色欲av| 国产操逼片| 亚洲成人性爱| 亚洲中文字幕AV| 水蜜桃网址| 亚洲欧洲中文字幕| 色哟哟国产精品| 思思操| 欧美成人毛片一级A片| 九九九无码| 神马午夜精品91| 欧美国产高清| 亚洲男同Gay一区二区| 久久久久久久9999| 人人摸人人爱人人操| 日本色中文字幕| 一级视频免费观看| 婷婷五月激情中文字幕| 日韩视频三区| 91麻豆国产福利精品| 性爱精品视频| 成人先锋AV| 在线免费看AV片| 国产性爱精品影片免费看| 伊人97| 男人天堂影院| 婷婷久久综合| 成人免费观看的毛视频| 免费亚洲视频| 国产精品操逼| 亚洲激情在线| 法国《少女日记》电影| 久久大香蕉| 天天爱天天操| 亚洲一本在线电影av| 乱伦无码| 男女啪网| 淫荡97| 亚州AV天堂| 日韩免费在线视频观看| 自拍偷拍免费| 美日韩综合| va色婷婷亚洲在线| 裸体黄色一极大片| 爱爱天堂| 91精品少妇| 亚洲日本中文字幕在线观看| 久久都是精品| 中文字幕精品视频在线| 蜜桃人妻无码| 99热综合在线| 91人人操人人爽| 欧美日韩黄色片| 日韩欧美手机在线| 中文字幕在线视频免费观看| 夜夜夜撸| 9i看片成人免费视频| 亚洲av在线免费观看| 免费V片| 69成人网站| 国产成人在线免费观看| 天天日天天草| 免费无码视频| 欧美性猛交一区二区三区精品| 亚洲国产精品一区二区三区| 综合久久av| 欧美日韩免费观看视频| 成年人黄色视频| 中文在线A∨在线| 夜色88V精品国产亚洲| 亚洲天堂视频在线播放| 亚洲天堂精品在线| 亚洲无码字幕| 三级久久久| www.黄色在线观看| 日韩人妻一区二区| 91香蕉视频| 91大神久久| 熟女少妇网站| 无码日韩电影| 亚洲第一成网站| 高清视频一区| 久久学生妹| 日韩在线播放视频| 中文字幕一区二区三区四区五区六区| 免费一级黄色| 久久久网站| 欧美综合网| 国产无毛| 高清无码片| 嘿咻嘿咻动态图| 日本黄色a片| 成人性爱视频在线播放| 精品国产成人a在线观看| 精品在线一区| 韩国无码免费| 成人精品18| 天天干强奸视频在线综合| 亚洲影音先锋资源| 91乱了伦国产乱子伦| 美女一级A片| 日本操B视频| 日本天天操| 一级无码高清| h网站在线观看| 在线无码视频| 中国一级黄片| 国产一级性爱| 天天日,天天干,天天操| 老太色HD色老太HD| 成人乱无码AV在线观看| 最近中文字幕免费mv第一季歌词強上 | 亚洲va在线∨a天堂va欧美va| 亚洲视频在线观看中文字幕| 亚洲免费观看高清完| 农村三级片| 欧美三级美国一级| 亚洲福利视频网| 成人无码一区| 麻豆成人片| 少妇AAA级久久久无码精品片| 天堂网一区二区三区| 国产三级网址| 亚洲v欧美| 在线天堂网| 狠狠干亚洲视频| 无码视频免费播放| 天天操夜夜干| 国产一级黄| 欧美第1页| 国产精品秘久久久久久免费播放| 中国免费看片| 色婷婷7777| 一本色道久久无码人妻精品69| 国产麻豆精品成人毛片| 一级片在线免费观看| 亚洲777| 国产久久视频在线观看| 国产在线性爱视频| 黄色视频在线观看免费网站| 亚洲狼人综合| 黄网站在线观看| 天堂网中文在线| 久久亚洲AV成人无码国产野外| 五月天久久精品| 国产精品视频免费看| 东京热精品视频| 神马午夜av| 特黄特色免费视频| 大奶无码| 亚洲成人综合在线| 亚洲av影院| 国产一级二级三级视频| 婷婷色视频| 中文字幕国产精品| 亚洲热在线观看| 天堂网址激情网址| 2022天天干| 99er在线观看视频| 国产精品一线| 亚州无码| 99r6热只有精品免费观看| 欧美国产综合| 无码精品视频在线观看| 免费黄片网站| 亚洲五月六月| 国产一級A片免费看| 91中文字幕+乱码| 好吊一区二区三区| 日本在线视频不卡| 久久婷五月天| 另类罕见稀奇videos| 五月婷婷六月丁香| 久久久久成人视频| 初尝人妻滑进去了莹莹视频| 亚洲无码A片在线观看| 欧美操逼视频| 成年人激情网| 尤物视频官网| 人人操人人操人人| 亚洲av二区| 亚洲免费成人网| 亚洲综合免费观看高清完整版| 操逼视频免费看| 色婷婷在线视频播放| 男人天堂新地址| 国产高清一区二区| 巨乳无码噜噜噜久久久| 三洞齐开Av在线免费观看| 91人妻人人澡人人爽人人精品一 | 午夜免费性爱视频| 狠狠操婷婷| 亚洲狼人天堂| 国产av大全| 日韩AV免费在线播放| 成人AV一区二区三区| 国产在线拍揄自揄拍无码福利| 亚洲福利影院| 欧美在线亚洲| 一区二区视频在线| 欧美无人区码suv| 日本乱轮视频| 中文无码日本一级A片人| 亚洲人成在线观看| 亚洲AV秘无码一区在线| 尹人在线视频| 国产a√| 91久久精品国产91久久公交车| 亚洲砖区区免费| 亚洲福利视频网| 天堂资源地址在线| 俺去啦俺去啦| 麻豆国产精品一区| 爱精品视频| 插插插综合| 91麻豆影院| 国产和日韩中文字幕| 久久四区| 人妻大屁股-91Porn| 中文AV第一页| 97人人干人人| 久久亚洲AV| AV无码国产| 成人图片小说| 免费看一级一级人妻片| 成年人毛片视频| NP玩烂了公用爽灌满视频播放| 成人午夜福利网站| 男人天堂无码成人| 一本久久精品一区二区| 日韩人妻精品无码| 国精品无码人妻一区二区三区| 亚洲va视频| 电影豹妹香港版| 嫩草嫩草69| 羽月希无码| 国产精品视频在线看| 成人网站www污污污网站公司| 成人三级在线观看| 欧美51精品| 人人草人人摸人人看| 日韩欧美一级| 少妇搡BBBB搡BBB搡小说| 男女啪啪动态图| 中文无码精品欧美日韩| 日韩日韩日韩日韩| 91探花足浴店少妇在线| 国产精品v欧美精品v日韩精品| 国模一区二区| 欧美爆操视频| 亚洲字幕av| 国产精品内射婷婷一级二| 狠狠肏视频| 日本爱爱免费| 欧洲黑人成人A版免费视频| 天天躁夜夜躁av| 91精品综合| 91精品91久久久中77777| 中文字幕在线网| 中文字幕高清| 国产无遮挡又黄又爽又色视频| 一级免费黄色片| 亚洲狼人久久久精品| 91欧美精品| 亚洲啪啪网站| 色情一级AA片免费观看| 午夜福利无码视频| 国产精品码ls字幕影视| 91丨九色丨东北熟女| 中文字幕一级片| 久久久久久高清毛片一级| 秋霞无码一区二区三区| 日韩一区在线播放| 超碰中文字幕| 麻豆传媒免费观看| 天堂免费视频| 久久久永久免费视频| 少妇搡BBBB搡BBB搡视频一级| 国产伦子伦一级A片免费看老牛| 青青草手机在线观看| 激情男人网| 亚洲日韩欧美中在线| 一级AV片| 欧美69p| 亚洲综合色婷婷| 亚洲欧美日韩中文字幕在线观看| 欧美综合在线观看| 9久精品| 91精品久久久久久粉嫩| 亚洲综合伊人无码| 天天操夜| 特猛特黄AAAAAA片| 国产毛片一区二区| 蜜桃高清无码| 中文字幕2025年最好看电视剧| A一级黄色| 噜噜噜色| 国产狂喷水潮免费网站www| 免费看毛片网站| 国产av一区二区三区| 一区二区三区四区五区| 国产人人操| 欧美mv日韩mv国产| 91午夜福利| 日本黄色视频在线免费观看| 国产免费A片| 日韩欧美一区二区在线观看| 亚洲在线视频观看| 精品人妻一区二区免费蜜桃| 小骚逼操死你| 蜜臀AV午夜精品| 偷拍三区| 日韩AV无码成人精品| 大香蕉视频在线观看| 国产精品美女久久久久AV爽| 欧美日韩国产在线| 国产探花在线观看| www.黄色| 欧美第一色| 国产主播精品在线| 天天做天天爽| 国产精品探花熟女AV| 国产熟妇毛多久久久久一区| 日韩一区二区免费看| 影音先锋在线视频| 大香蕉久久久久久久| 欧美老熟妇乱大交XXXXX| 7777精品伊人久久7777| 99er视频| 欧美成人手机在线观看| 3D动漫精品啪啪一区二区免费| 国产小精品| 大香蕉啪啪| 91丨PORNY丨对白| 中文字幕在线观看1| 成人AV十八亚洲二区| 日韩欧美日本| a片在线免费看| 996精品在线| 今天成全在线观看高清| 欧美亚洲国产一区二区三区| 高潮喷水在线观看| 一区二区在线免费观看| 蜜桃传媒一区二区| 中文字幕第10页| 欧美色一级| 51av在线| 少妇搡BBBB搡BBB搡18禁| 国产欧美一区二区三区在线看蜜臀 | 中国无码| 操啊操| 国产精品小电影| 日韩人妻精品中文字幕免费| 操操操综合网| 欧美一级操| 国产在线高潮| 最新亚洲中文字幕| 亚州AV| 国产一在线| 日日夜夜爽歪歪| 中文字幕免费高清网站| 偷拍内射| 色色在线| 3D动漫精品一区二区在线播放免费 | 欧美日韩成人一区二区三区| 欧美操逼免费视频| 色五月天婷婷| 亚洲精品成人AV| 欧美视频在线观看| 嫩苞又嫩又紧AV无码| av黄色网| 日韩中文字幕AV| 亚洲AV无码秘翔田| 永久免费看片视频5355| 亚洲天堂第一页| 亚洲精品aaa| 91精品久久久久久| 久久大屌| 欧美黄片区| 亚洲无码福利视频| 停停六综合| 国产精品国内自产拍| 日韩免费黄色电影| 夜间福利视频| 青青在线| 国产美女啪啪视频| 国产精品久久7777777精品无码 | 亚洲精品乱码| 中文字幕av免费观看| 国外亚洲成AV人片在线观看| 色婷婷AV一区二区三区软件| 国精产品一二三区| 翔田千里被操120分钟| caopor在线| www.豆花社区成人| 欧美乱伦视频| 久久丝袜视频| 在线a视频免费观看| 成人无码视频| 欧美啪啪啪| 久久久久亚洲精品| 天天干天天日天天操| 在线观看国产一区| 天天日天天操天天爽| 亚洲成人中文字幕| 久久精品中文| 日本黄色a片| 激情AV在线观看| A免费视频| 精品视频日韩| 欧美黄色网视频| 最新国产AV| 99re6热在线精品视频| 91要爱爱| 啪啪免费网站| 又大又粗又爽| 日本黄在线看| 一区二区三区久久| 午夜无码人妻AV大片| 黑人乱伦| 国产偷拍精品视频| 国产视频无码| 小明看台湾成人永久免费视频网站| 黄色一级生活片| 亚洲成人高清无码| 久久综合伊人777777| 躁BBB躁BBB躁BBBBBB日视频 | 一本道无码在线观看| 无码国产一区二区三区四区五区| 人人爽人人操人人爱| 蜜桃黄片AV在线观看| 国产午夜福利在线| 大香蕉在线啪啪| 免费成人国产| 波多野结衣成人视频| 久色精品| 丁香婷婷五月基地| 天天噜噜色| 久久天堂网| 精品人妻二区三区蜜桃| 国产尤物在线观看| 国内操B电影| 国产AⅤ爽aV久久久久成人| 色哟哟在线观看| 日批视频网站| 国产精品无码在线播放| av高清无码| 青春草免费视频| 黄片高清无码在线观看| 白丝自慰网站| 中文字幕h| 黄片网站在线看| 欧美性爱XXXX黑人XYX性爽| 亚洲AV综合色区无码国产播放| 亚洲无码视频免费看| 激情综合婷婷久久| 国产精品1区2区3区| 在线观看av中文字幕| 有码在线| 免费中文字幕AV| 国产中文自拍| 五月天激情综合| 精品内射| 精品一区二区三区免费毛片| 国产三级黄| 插逼免费视频| 爱爱帝国综合社区| 亚洲日韩国产AV无码无码精品| 欧美亚洲动漫| 91大奶熟女| 91蝌蚪视频在线| 午夜一区二区三区| 欧美夜夜操| wwwsesese| 天堂视频在线观看亚洲美女| 久久久久人妻| 欧美在线不卡| 91视频色| 中文字幕在线观看日本| 精品日韩中文字幕| 麻豆国产成人AV一区二区三区| 精品无码视频| 十八禁在线播放| 亚洲精品女人久久久| 亚洲av小说| 中文无码日本高潮喷水| 91麻豆精品成人一区二区| 青青草原在线| 久草在线播放| 影音先锋色AV| 国产免费国产| 国产嫩草久久久一二三久久免费观看 | 少妇BBBB| 午夜亚洲AV永久无码精品蜜芽 | 91探花足浴店少妇在线| 免费看成人片| 无码中文AV| 艹美女视频| 成人亚洲精品一区二区三区| 无码免费一区二区三区| 一级女婬片A片AAAA片| 久久久噜噜噜| 日日操网| 性爱视频99| 久久99精品久久久久| 天堂无线av无码av| 中文字幕久久无码| 无码人妻系列| 日韩无码五月天| 国产黄片一区二区| 免费人成视频观看| 在线99精品| 亚洲国产成人精品女人久久久| 日本AⅤ在线| 内射在线| 99国产热| 欧美成人一级片| 亚洲国产综合AV在线| 男人天堂无码av| 在线一区二区三区| 人妻免费视频| 在线观看无码高清| 五月天成人网址| 国产成人激情视频| 欧美AAAAAAAAAA特级| 52妺嘿嘿午夜福利在线| 亚洲国产精品自在自线| 国产免费无码| 亚洲欧美一区二区三区在线| 美女91视频| 蜜臀久久久| 国产精品一色哟哟哟| 无码人妻精品一区二区蜜桃网站| 久久久国产一区二区三区| 国产精品一麻了麻了| 国产成人A片| 五月丁香伊人| 欧美一级A片免费看| 亚洲中文字幕在线视频观看| 丁香五月激情在线| 亚洲丝袜av| 丁香五月激情啪啪| 成人黄片在线免费观看| 国产嫩草久久久一二三久久免费观看 | 国产免费av网站| 北条麻妃九九九在线视频| 人人澡人人爽欧一区| 精品无码一区二区三区四区久久久软件 | 999久久| 男人天堂新地址| 青青草原在线视频免费观看 | 久久精品无码一区二区无码性色| A级片黄色片| www.zaixianshipin| 国产福利视频在线观看| 大地二中文在线观看免费鲁大师 | 欧美一级免费观看| 精品无码人妻一区二区| 综合久久中文字幕| 秘亚洲国产精品成人网站| 性色在线| 琪琪色五月天| 国产白嫩精品久久久久久| 久久99精品久久久久| 国产麻豆精品ThePorn| 成人精东影业JDAV3密友| 成人黄色免费视频| 黄色片在线播放| 国产午夜视频在线观看| 亚洲激情婷婷| 玩弄人妻少妇500系列视频| 久草免费电影| 强开小嫩苞一区二区电影| 黄色视频在线观看免费网站| 怡春院久久| 久久91精品| 超碰在线天天| 91网站在线观看视频| 国产又爽又黄网站免费观看| 欧美一区二区三区在线播放| 国产高清激情| 97人人操人人干| 欧美黄色a片| 久久久无码精品亚洲日韩男男| 国产欧美在线综合| 日韩欧美不卡色不卡| 伊人网在线视频| 欧美日韩在线播放| 人妻人人操| 丁香婷婷色五月| 99亚洲精品| 日本不卡在线| 福利视频一区| 国产免费无码一区二区| 熟女中文字幕| 日韩爱爱| 91精品久久久久久| www.骚逼| 熟女无码| 青草福利视频| 国产操逼片| 人人色人人色| 中文字幕免费在线观看| 国产视频久久| 97视频| 国产亚洲午夜久久久成人电影| 国产视频一区二区三区四区| 1插菊花综合网| 国产三级自拍| i美女福利视频| 开心四房播播第四婷婷| 黄色在线欣赏| 人妻77777| 国产精品乱草| 996热久久| 91人妻日韩人妻无码专区精品| 日韩成人片无码| 91蝌蚪视频在线| 亚洲1234区| 一级a爱视频| 国产日韩欧美成人| 日韩一区二区三区四区久久久精品有吗| 亚洲播播在线视频| 欧美精品三区| 国产一级性爱| 特黄一级片| 麻豆一二三区| 91成人小视频| 操逼逼网站| 欧美自拍视频在线| 免费欧美A片| 欧美Aⅴ| av资源免费| www.91在线| 老司机免费福利视频| 无码啪啪啪| 天天日天天操天天干| 日韩成人免费| 欧美日韩中文字幕无码| 91视频在线| 国产午夜91人妻| 在线观看视频日韩| 午夜伦理福利| 三级片男人天堂| 揉BBB搡BBB搡BBB| 久久黄色视屏| 爆操网站| 欧美午夜伦理| 天天爽天天搞| 久热国产精品| 久久久无码精品亚洲| 另类图片亚洲色图| 日韩人妻无码视频| 午夜小电影| 婷婷草逼| 亚洲AV无码成人精品区东京热| 亚洲日韩网站| 国产日韩一区二区三免费高清| 国产大屌| 大香蕉在线网站| 亚洲三级网| 激情国产| 玩弄人妻少妇500系列视频| 在线无码一区| 无码视频播放| 久久99精品久久久久婷婷| 人人妻日日摸狠狠躁| 黄色毛片在线播放| 校园春色亚洲色图| 国內精品久久久久久久| 最新中文字幕在线观看视频| 亚洲专区在线播放| 色色资源网| 麻豆免费视频| 超碰自拍| 狠狠爱av| 国产精品99久久免费黑人人妻| 激情五月天在线视频| 久久久久a| 成人免费黄色视频| 一级国产欧美成人A片| 美女自慰网站在线观看| 国产激情网站| 午夜小电影| 国产毛片久久久久久国产毛片 | 爽好紧别夹喷水网站| 台湾无码| 亚洲AV无码成人网站国产网站| 福利视频中文字幕| 麻豆91蜜桃传媒在线观看| 日韩AV高清无码| 国产3区| 97超碰在| 五月久久婷婷| 开心激情网站| 嫩草99| 人妻丰满精品一区二区| 日本a在线免费观看| 久久久成人片| 欧美亚洲天堂网| 鸡巴网站| 人人爱人人妻人人操| 日韩AV免费在线播放| 国产黄片一区二区三区| 韩日一区二区三区| 大香蕉网伊| 人人看人人射| 无码一区二区三区四区| 成人精品永久免费视频99久久精品| 日韩无码福利| 91久久人澡人妻人人做人人爽97 | 亚洲无码在线视频观看| 精品999| 亚洲成人性爱| а√天堂中文最新版8| 国产高清无码网站| 91丨九色丨老熟女探花| 四色永久成人网站| 国产成人小视频| 欧美日韩中文字幕无码| 99精品视频北条麻妃国产版| 成人性爱视频在线| 大香蕉这里只有精品| 免费看成人A片无码照片88hⅤ| 国产爱搞| gay成人在线观看| 日韩欧美日韩| 黄色视频日本免费| 日本一区二区三区免费观看| 日韩中文字幕一区| 91精品国产成人观看| 欧美一级黄片免费看| 久久亚洲AV成人无码国产野外| 大香蕉东京热| 欧美日韩一区在线| 国产乱子伦日B视频| 丰满人妻一区二区三区Av猛交 | 无码操逼视频| 久久久网站| 91香蕉在线观看视频在线播放 | 国产香蕉av| h片在线观看免费| 另类老妇性BBwBBw| 精品少妇无码视频| www.91熊猫成人网| 色婷婷日韩精品一区二区三区| 97人妻精品一区二区三区| 人妻丝袜中出北条麻妃| 波多野结衣福利视频| 91精品无码一区二区| 狠狠撸狠狠操| 亚洲群交| 青春草在线免费观看| 色国产在线| 99热r| 99综合| 豆花无码视频一区二区| 国产成人777777精品综合| 亚欧成人网站| 俺来也俺也啪www色| av不卡免费观看| 五月天无码免费视频| 久久久久久久97| 熟女一区二区| 2019中文字幕在线| 一区四区视频| 欧美成人三级精品| 图片区视频区小说区| 国产精品9999久久久久仙踪林 | 日韩乱伦AV| 高清无码免费在线| 九九九九九九国产| 有码视频在线观看| AV无码在线播放| 国产无码电影| 国产黄色一区| 午夜天堂在线观看| 三级片网站大全| 九九免费视频| 日韩成人无码精品| 波多野结衣日韩| 天天干天天干天天日| 国产青娱乐在线视频| 久久视频免费在线观看| 日韩a级片| 日韩成人免费视频| 久久六六| 色色播| 久久成人片| 91麻豆精品国产91久久久久久久久| 97一区| 国产学生妹在线播放| 亚洲黄色av| 91亚洲精华国产精华精华液| 安微妇搡BBBB搡BBBB| 亚洲日本在线观看| www日本色| 久久久xxx| 97人人爽人人爽人人人| 操逼91小视频| 好男人一区二区三区在线观看| 久久av片| 国产人人干| 天堂中文8资源在线8| 色屁屁草草影院ccyycom| 午夜视频福利| 国产成人毛片18女人18精品| 蜜桃成人无码区免费视频网站| 亚洲三级在线播放| 美女网站黄a| 亚欧视频在线观看| 一级特黄AAAA片| 欧美日本成人网站入口| 欧美AⅤ视频| 自拍三级片| 欧美在线不卡综合| 五月天婷婷网址| 91成人精品一区二区| 综合婷婷| 人妻操逼视频| AV无码观看| 操逼视频在线观看| 人人射人人干| 俺来也俺也啪WWW色| 日韩精品| 四虎成人在线| 亚洲黄片视频| 人人妻人人澡人人爽久久| 日韩色逼| 亚洲黄色免费在线观看| 日韩AV无码免费| 91麻豆精品国产91久久久久久| 成人AV毛片| 久久综合成人| 五月天久久精品| 操中国老女人| 91久久偷拍视频| 福利三区| 无码视频在线观看| 艹美女视频| 最近2021中文字幕免费| 中文字幕视频在线直播| 婷婷毛片| 九九视频免费在线观看| 爱爱天堂| 69av在线视频| 亚洲日韩视频| 天堂网2025| 伊人久久艹| 亚欧洲精品视频| 综合天天| 国产精品操逼| 久久久久久久久久久久高清毛片一级| 三级亚洲| 国产牛牛在线| 12——13女人毛片毛片| 五月丁香影院| 亚洲av高清| 日本五十路熟女视频| 国产激倩都市一区二区三区欧美| 想要xx视频| 91无码电影| 黄色一级片在线看| 2025av天堂网|