日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java netty聊天室_netty实现消息中心(二)基于netty搭建一个聊天室

發布時間:2023/12/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java netty聊天室_netty实现消息中心(二)基于netty搭建一个聊天室 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

上篇博文(netty實現消息中心(一)思路整理

)大概說了下netty websocket消息中心的設計思路,這篇文章主要說說簡化版的netty聊天室代碼實現,支持群聊和點對點聊天。

此demo主要說明netty實現消息推送的基本使用方法,如果需要擴充其它功能,可以基于此腳手架擴展。

完整項目代碼地址:netty聊天室github源碼

介紹

1.登錄頁面

2.聊天頁面

核心代碼:

啟動netty服務,監聽端口

private static void startNettyMsgServer() {

// 使用多Reactor多線程模型,EventLoopGroup相當于線程池,內部維護一個或多個線程(EventLoop),每個EventLoop可處理多個Channel(單線程處理多個IO任務)

// 創建主線程組EventLoopGroup,專門負責建立連接

EventLoopGroup bossGroup = new NioEventLoopGroup(1);

// 創建子線程組,專門負責IO任務的處理

EventLoopGroup workGroup = new NioEventLoopGroup();

try {

ServerBootstrap b = new ServerBootstrap();

b.group(bossGroup, workGroup);

b.channel(NioServerSocketChannel.class);

b.childHandler(new WebSocketChanneInitializer());

System.out.println("服務端開啟等待客戶端連接....");

Channel ch = b.bind(WebSocketConstant.WEB_SOCKET_PORT).sync().channel();

//創建一個定長線程池,支持定時及周期性任務執行

ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3);

WebSocketInfoService webSocketInfoService = new WebSocketInfoService();

//定時任務:掃描所有的Channel,關閉失效的Channel

executorService.scheduleAtFixedRate(webSocketInfoService::scanNotActiveChannel,

3, 60, TimeUnit.SECONDS);

//定時任務:向所有客戶端發送Ping消息

executorService.scheduleAtFixedRate(webSocketInfoService::sendPing,

3, 50, TimeUnit.SECONDS);

ch.closeFuture().sync();

} catch (Exception e) {

e.printStackTrace();

} finally {

// //退出程序

bossGroup.shutdownGracefully();

workGroup.shutdownGracefully();

}

}

netty ChannelHandler,負責處理通道的生命周期事件

package com.cola.chat_server.handler;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

import java.util.UUID;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;

import com.cola.chat_server.constant.MessageCodeConstant;

import com.cola.chat_server.constant.MessageTypeConstant;

import com.cola.chat_server.constant.WebSocketConstant;

import com.cola.chat_server.model.WsMessage;

import com.cola.chat_server.service.WebSocketInfoService;

import com.cola.chat_server.util.DateUtils;

import com.cola.chat_server.util.NettyAttrUtil;

import com.cola.chat_server.util.RequestParamUtil;

import com.cola.chat_server.util.SessionHolder;

import io.netty.buffer.ByteBuf;

import io.netty.buffer.Unpooled;

import io.netty.channel.Channel;

import io.netty.channel.ChannelFuture;

import io.netty.channel.ChannelFutureListener;

import io.netty.channel.ChannelHandlerContext;

import io.netty.channel.SimpleChannelInboundHandler;

import io.netty.handler.codec.http.DefaultFullHttpResponse;

import io.netty.handler.codec.http.FullHttpRequest;

import io.netty.handler.codec.http.HttpResponseStatus;

import io.netty.handler.codec.http.HttpVersion;

import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;

import io.netty.handler.codec.http.websocketx.PingWebSocketFrame;

import io.netty.handler.codec.http.websocketx.PongWebSocketFrame;

import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;

import io.netty.handler.codec.http.websocketx.WebSocketFrame;

import io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker;

import io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory;

import io.netty.util.CharsetUtil;

/**

* Netty ChannelHandler,用來處理客戶端和服務端的會話生命周期事件(握手、建立連接、斷開連接、收消息等)

* @Author

* @Description 接收請求,接收 WebSocket 信息的控制類

*/

public class WebSocketSimpleChannelInboundHandler extends SimpleChannelInboundHandler {

private static final Logger logger = LoggerFactory.getLogger(WebSocketSimpleChannelInboundHandler.class);

// WebSocket 握手工廠類

private WebSocketServerHandshakerFactory factory = new WebSocketServerHandshakerFactory(WebSocketConstant.WEB_SOCKET_URL, null, false);

private WebSocketServerHandshaker handshaker;

private WebSocketInfoService websocketInfoService = new WebSocketInfoService();

/**

* 處理客戶端與服務端之間的 websocket 業務

*/

private void handWebsocketFrame(ChannelHandlerContext ctx, WebSocketFrame frame) {

//判斷是否是關閉 websocket 的指令

if (frame instanceof CloseWebSocketFrame) {

//關閉握手

handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain());

websocketInfoService.clearSession(ctx.channel());

return;

}

//判斷是否是ping消息

if (frame instanceof PingWebSocketFrame) {

ctx.channel().write(new PongWebSocketFrame(frame.content().retain()));

return;

}

// 判斷是否Pong消息

if (frame instanceof PongWebSocketFrame) {

ctx.writeAndFlush(new PongWebSocketFrame(frame.content().retain()));

return;

}

//判斷是否是二進制消息,如果是二進制消息,拋出異常

if (!(frame instanceof TextWebSocketFrame)) {

System.out.println("目前我們不支持二進制消息");

ctx.channel().write(new PongWebSocketFrame(frame.content().retain()));

throw new RuntimeException("【" + this.getClass().getName() + "】不支持消息");

}

// 獲取并解析客戶端向服務端發送的 json 消息

String message = ((TextWebSocketFrame) frame).text();

logger.info("消息:{}", message);

JSONObject json = JSONObject.parseObject(message);

try {

String uuid = UUID.randomUUID().toString();

String time = DateUtils.date2String(new Date(), "yyyy-MM-dd HH:mm:ss");

json.put("id", uuid);

json.put("sendTime", time);

int code = json.getIntValue("code");

switch (code) {

//群聊

case MessageCodeConstant.GROUP_CHAT_CODE:

//向連接上來的客戶端廣播消息

SessionHolder.channelGroup.writeAndFlush(new TextWebSocketFrame(JSONObject.toJSONString(json)));

break;

//私聊

case MessageCodeConstant.PRIVATE_CHAT_CODE:

//接收人id

String receiveUserId = json.getString("receiverUserId");

String sendUserId = json.getString("sendUserId");

String msg = JSONObject.toJSONString(json);

// 點對點挨個給接收人發送消息

for (Map.Entry entry : SessionHolder.channelMap.entrySet()) {

String userId = entry.getKey();

Channel channel = entry.getValue();

if (receiveUserId.equals(userId)) {

channel.writeAndFlush(new TextWebSocketFrame(msg));

}

}

// 如果發給別人,給自己也發一條

if (!receiveUserId.equals(sendUserId)) {

SessionHolder.channelMap.get(sendUserId).writeAndFlush(new TextWebSocketFrame(msg));

}

break;

case MessageCodeConstant.SYSTEM_MESSAGE_CODE:

//向連接上來的客戶端廣播消息

SessionHolder.channelGroup.writeAndFlush(new TextWebSocketFrame(JSONObject.toJSONString(json)));

break;

//pong

case MessageCodeConstant.PONG_CHAT_CODE:

Channel channel = ctx.channel();

// 更新心跳時間

NettyAttrUtil.refreshLastHeartBeatTime(channel);

default:

}

} catch(Exception e) {

logger.error("轉發消息異常:", e);

e.printStackTrace();

}

}

/**

* 客戶端與服務端創建連接的時候調用

*/

@Override

public void channelActive(ChannelHandlerContext ctx) throws Exception {

//創建新的 WebSocket 連接,保存當前 channel

logger.info("————客戶端與服務端連接開啟————");

// // 設置高水位

// ctx.channel().config().setWriteBufferHighWaterMark();

// // 設置低水位

// ctx.channel().config().setWriteBufferLowWaterMark();

}

/**

* 客戶端與服務端斷開連接的時候調用

*/

@Override

public void channelInactive(ChannelHandlerContext ctx) throws Exception {

logger.info("————客戶端與服務端連接斷開————");

websocketInfoService.clearSession(ctx.channel());

}

/**

* 服務端接收客戶端發送過來的數據結束之后調用

*/

@Override

public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {

ctx.flush();

}

/**

* 工程出現異常的時候調用

*/

@Override

public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {

logger.error("異常:", cause);

ctx.close();

}

/**

* 服務端處理客戶端websocket請求的核心方法

*/

@Override

protected void channelRead0(ChannelHandlerContext channelHandlerContext, Object o) throws Exception {

if (o instanceof FullHttpRequest) {

//處理客戶端向服務端發起 http 請求的業務

handHttpRequest(channelHandlerContext, (FullHttpRequest) o);

} else if (o instanceof WebSocketFrame) {

//處理客戶端與服務端之間的 websocket 業務

handWebsocketFrame(channelHandlerContext, (WebSocketFrame) o);

}

}

/**

* 處理客戶端向服務端發起 http 握手請求的業務

* WebSocket在建立握手時,數據是通過HTTP傳輸的。但是建立之后,在真正傳輸時候是不需要HTTP協議的。

*

* WebSocket 連接過程:

* 首先,客戶端發起http請求,經過3次握手后,建立起TCP連接;http請求里存放WebSocket支持的版本號等信息,如:Upgrade、Connection、WebSocket-Version等;

* 然后,服務器收到客戶端的握手請求后,同樣采用HTTP協議回饋數據;

* 最后,客戶端收到連接成功的消息后,開始借助于TCP傳輸信道進行全雙工通信。

*/

private void handHttpRequest(ChannelHandlerContext ctx, FullHttpRequest request) {

// 如果請求失敗或者該請求不是客戶端向服務端發起的 http 請求,則響應錯誤信息

if (!request.decoderResult().isSuccess()

|| !("websocket".equals(request.headers().get("Upgrade")))) {

// code :400

sendHttpResponse(ctx, new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.BAD_REQUEST));

return;

}

//新建一個握手

handshaker = factory.newHandshaker(request);

if (handshaker == null) {

//如果為空,返回響應:不受支持的 websocket 版本

WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(ctx.channel());

} else {

//否則,執行握手

Map params = RequestParamUtil.urlSplit(request.uri());

String userId = params.get("userId");

Channel channel = ctx.channel();

NettyAttrUtil.setUserId(channel, userId);

NettyAttrUtil.refreshLastHeartBeatTime(channel);

handshaker.handshake(ctx.channel(), request);

SessionHolder.channelGroup.add(ctx.channel());

SessionHolder.channelMap.put(userId, ctx.channel());

logger.info("握手成功,客戶端請求uri:{}", request.uri());

// 推送用戶上線消息,更新客戶端在線用戶列表

Set userList = SessionHolder.channelMap.keySet();

WsMessage msg = new WsMessage();

Map ext = new HashMap();

ext.put("userList", userList);

msg.setExt(ext);

msg.setCode(MessageCodeConstant.SYSTEM_MESSAGE_CODE);

msg.setType(MessageTypeConstant.UPDATE_USERLIST_SYSTEM_MESSGAE);

SessionHolder.channelGroup.writeAndFlush(new TextWebSocketFrame(JSONObject.toJSONString(msg)));

}

}

/**

* 服務端向客戶端響應消息

*/

private void sendHttpResponse(ChannelHandlerContext ctx, DefaultFullHttpResponse response) {

if (response.status().code() != 200) {

//創建源緩沖區

ByteBuf byteBuf = Unpooled.copiedBuffer(response.status().toString(), CharsetUtil.UTF_8);

//將源緩沖區的數據傳送到此緩沖區

response.content().writeBytes(byteBuf);

//釋放源緩沖區

byteBuf.release();

}

//寫入請求,服務端向客戶端發送數據

ChannelFuture channelFuture = ctx.channel().writeAndFlush(response);

if (response.status().code() != 200) {

/**

* 如果請求失敗,關閉 ChannelFuture

* ChannelFutureListener.CLOSE 源碼:future.channel().close();

*/

channelFuture.addListener(ChannelFutureListener.CLOSE);

}

}

}

會話工具類,保存用戶和通道的對應關系,用于廣播和點對點聊天

/**

* netty會話管理

* @author

*

*/

public class SessionHolder {

/**

* 存儲每個客戶端接入進來時的 channel 對象

* 主要用于使用 writeAndFlush 方法廣播信息

*/

public static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);

/**

* 用于客戶端和服務端握手時存儲用戶id和netty Channel對應關系

*/

public static Map channelMap = new ConcurrentHashMap();

}

主要代碼就是以上部分,如果需要擴充其它功能,可以基于此腳手架擴展。

完整項目代碼地址:netty聊天室github源碼

此demo主要用于展示netty實現消息推送的基本使用方法,用于生產還存在以下單機問題:

1.無法支撐過高連接數

2.廣播時帶寬有限

3.不能實現高可用

4.無法橫向擴展

后期將集成zookeeper,做一版netty集群的聊天室。

總結

以上是生活随笔為你收集整理的java netty聊天室_netty实现消息中心(二)基于netty搭建一个聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

手机av片 | 日韩一区二区三免费高清在线观看 | 国产精品视频全国免费观看 | 在线亚洲欧美视频 | 国产精品18久久久久久首页狼 | 狠狠gao| 日韩免费在线观看 | 91av在线免费观看 | 国产偷在线 | 97av影院| 日本公妇在线观看 | av免费试看 | 久久久久久久久福利 | 狠狠躁天天躁综合网 | 色瓜| 91精品国产麻豆国产自产影视 | 国产精品久久久久久久午夜 | 天天干天天想 | 国产精品一区二区三区电影 | www.色午夜.com | 国产123区在线观看 国产精品麻豆91 | 2019精品手机国产品在线 | 日本丶国产丶欧美色综合 | 久草在线电影网 | 久久一区国产 | 婷婷久久婷婷 | 天堂网一区二区三区 | 久久综合九色综合97婷婷女人 | 国产最顶级的黄色片在线免费观看 | 久久久电影网站 | 日韩亚洲在线 | 久久草网 | 欧美福利在线播放 | 欧美日韩久久久 | 欧美大片在线观看一区 | 激情深爱五月 | 久草在线视频国产 | 国产美女黄网站免费 | av中文在线播放 | 免费h精品视频在线播放 | 午夜av剧场| 插婷婷 | 日韩啪视频 | 久久综合九色综合97婷婷女人 | 大荫蒂欧美视频另类xxxx | 在线中文字幕av观看 | 亚洲欧洲av在线 | 色视频在线观看免费 | 日av免费| 色是在线视频 | 国内精品久久久久影院一蜜桃 | 欧美国产精品久久久久久免费 | 久久免费视频1 | 在线小视频你懂的 | 91精品国产高清自在线观看 | 日韩在线高清 | 国产69精品久久app免费版 | 97综合在线 | 久久99久国产精品黄毛片入口 | 一区二区精品视频 | 日本特黄特色aaa大片免费 | 四虎成人精品在永久免费 | 激情网五月天 | 中文字幕第一页在线vr | 一区二区三区四区五区在线 | 五月婷婷播播 | 超碰日韩在线 | 综合久久久久久久久 | 黄色tv视频 | 亚洲欧美日韩在线一区二区 | 久久一视频 | 日本在线观看视频一区 | 丁香影院在线 | 精品久久久久久久久久 | 五月综合久久 | 久久久网 | 成人av在线观 | 国内精品久久久久影院优 | 激情婷婷综合 | 精品黄色在线观看 | 日韩剧情| 韩国中文三级 | 国内视频| 婷婷色六月天 | 国产一级免费电影 | 一区二区三区国产欧美 | 天天射天天干天天插 | 国内外激情视频 | 天天看天天干天天操 | 一区二区高清在线 | 99视频在线精品免费观看2 | 一区二区三区在线看 | 国产精品久久久久aaaa | 亚洲免费在线观看视频 | 亚洲成年片 | 久久理论片 | 欧美日韩中文字幕视频 | www.亚洲黄色 | 精品国产一区二区三区男人吃奶 | 久久高清片 | 亚洲精品午夜国产va久久成人 | 日韩欧美视频在线观看免费 | 偷拍视频一区 | 黄色软件视频大全免费下载 | 欧美巨乳网 | 国产精品露脸在线 | 亚洲午夜大片 | 久久99精品一区二区三区三区 | 国产视频午夜 | 久久久精品日本 | 中国一区二区视频 | 午夜精品区 | 麻豆国产精品va在线观看不卡 | 在线不卡视频 | 久久这里只有精品视频99 | 中文字幕 91 | 亚洲国产日韩av | 992tv成人免费看片 | a级国产片 | 99在线免费观看视频 | 亚洲传媒在线 | 亚洲va欧美va国产va黑人 | 最近免费中文字幕 | 91黄色免费看 | 精品99在线观看 | 欧美日韩视频在线观看免费 | 欧美视频www | 国产精品高清在线观看 | 狠狠躁夜夜a产精品视频 | 亚欧洲精品视频在线观看 | 精品999 | 欧美成人影音 | 国产精品久久网 | 国产精品久久久久久久久久久久久久 | 国产黄色大片 | 九九av| 久久视频在线观看 | 国产又粗又猛又色又黄网站 | 久久99在线视频 | 五月婷婷狠狠 | 国产自偷自拍 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 中文字幕在线一区二区三区 | 日本性生活一级片 | 国产在线97| 亚洲成人第一区 | 91片黄在线观看动漫 | 国产美女黄网站免费 | 亚洲欧美日韩精品久久久 | 国产欧美日韩精品一区二区免费 | 日本久久久久久久久久 | 免费色网站 | 亚洲欧洲国产日韩精品 | 欧美日韩一区二区在线观看 | 手机在线观看国产精品 | 日本大片免费观看在线 | www.99久久.com| 视频一区二区在线观看 | 不卡av免费在线观看 | 国产亚洲精品bv在线观看 | 久av在线 | 色99在线 | 在线成人高清电影 | 国产精品18久久久久久首页狼 | 国产精品一区专区欧美日韩 | 国产91亚洲精品 | 成人蜜桃 | 久久精品99国产 | 黄色在线看网站 | 久久视频免费观看 | 久久av在线 | 亚洲国产日韩欧美 | 五月天久久 | 黄色网址在线播放 | 97碰碰碰| 成人性生交大片免费观看网站 | 天天射天天射 | 国产成人精品午夜在线播放 | 玖玖国产精品视频 | 日韩黄色中文字幕 | 日韩在线免费播放 | 国产精品毛片久久蜜 | 国内视频1区 | 久99久中文字幕在线 | 欧美a√在线 | 黄色小说免费观看 | 国产又粗又猛又色又黄网站 | 9色在线视频 | 在线精品视频在线观看高清 | 色鬼综合网 | 麻豆国产精品视频 | 国产又黄又硬又爽 | 国产精品九色 | 丁香六月婷婷开心婷婷网 | 啪啪免费试看 | 亚洲 在线 | 日韩av资源站 | 久久久国产高清 | 丁香国产视频 | 国产资源免费 | 人人看人人爱 | 美女黄色网在线播放 | 久久高清免费视频 | 亚洲精品中文在线观看 | 在线三级中文 | 日韩黄色在线 | 中文字幕在线免费看线人 | 成人丁香花 | 日韩欧美一区二区在线播放 | 国产精品伦一区二区三区视频 | 久草资源在线 | 在线观看免费av片 | 午夜性盈盈| 国产国产人免费人成免费视频 | 韩国av不卡 | 日韩精品久久久久久久电影竹菊 | 69视频在线| 欧美日韩精品在线免费观看 | 国产成人高清在线 | a国产精品 | 国产亚洲人成网站在线观看 | 久久超碰网 | 久久久免费播放 | 欧美日韩在线观看一区二区 | 婷婷五月在线视频 | 国产美腿白丝袜足在线av | 欧美一区二区三区在线观看 | 国产专区在线播放 | 精品国产1区 | 亚洲视频2 | 久久免费视频这里只有精品 | 欧美欧美 | 四虎影视成人 | 91精品久久久久久久久久入口 | 91精品国产99久久久久久红楼 | 午夜精品在线看 | 亚洲精品一区二区三区新线路 | 夜夜操夜夜干 | 国产私拍在线 | 奇米先锋 | 天堂va欧美va亚洲va老司机 | 日韩乱理| 嫩小bbbb摸bbb摸bbb | 天天超碰 | 13日本xxxxxⅹxxx20 | 日本中文字幕网址 | 亚洲国产成人av网 | 亚洲免费精品视频 | 在线黄色观看 | 9在线观看免费 | 久久婷婷精品 | 久久99久久99精品免视看婷婷 | 丝袜美腿在线 | 久9在线 | 久草观看视频 | 97成人免费视频 | 日韩精品专区 | 亚洲欧美日韩精品一区二区 | 天天在线免费视频 | 免费色av | 色婷婷www | 99re久久资源最新地址 | 日韩超碰在线 | 日韩二区在线 | 国产成人久久av免费高清密臂 | 久久艹99| 日韩伦理片一区二区三区 | 国产精品成人免费一区久久羞羞 | 久久国产免 | a级国产乱理论片在线观看 特级毛片在线观看 | 伊人久久在线观看 | 高清一区二区三区av | 国产 在线观看 | 亚洲日韩中文字幕在线播放 | 国产高清在线a视频大全 | 国产白浆在线观看 | 国产在线观看国语版免费 | 亚洲精品国产精品99久久 | 久久国产乱 | 日本激情视频中文字幕 | 日日干激情五月 | 欧美日韩精品久久久 | 欧美激情精品久久久久久变态 | 免费成人av电影 | 国产精品成人自产拍在线观看 | 精品在线看 | 久久久免费精品国产一区二区 | 国产做aⅴ在线视频播放 | 91av视频在线免费观看 | 韩国av电影在线观看 | 久久久久久久久毛片精品 | 久久天天躁狠狠躁亚洲综合公司 | 色婷婷综合久久久中文字幕 | 亚洲视频在线看 | 狠狠狠狠狠狠狠干 | 女人高潮一级片 | 亚洲精品一区二区三区在线观看 | 国产亚洲人成网站在线观看 | 色婷婷成人网 | 456免费视频| 操天天操| 久草视频免费在线观看 | 波多野结衣一区三区 | 欧美国产一区二区 | 日韩免费福利 | 免费电影一区二区三区 | 日本一区二区三区免费观看 | 国产97在线看 | 美女黄久久 | 久久久久久久久国产 | 免费a现在观看 | 午夜婷婷在线观看 | 亚洲欧洲一级 | 狠狠躁日日躁狂躁夜夜躁 | 国产精品久久久久久一区二区三区 | 亚州国产精品久久久 | 日韩激情在线 | 国产精品去看片 | 中文字幕免费一区二区 | 天天曰天天射 | 欧洲精品亚洲精品 | 国产美女视频免费观看的网站 | 天天操天天怕 | 91九色蝌蚪 | 99精品在线观看视频 | 欧美日本在线视频 | 国产在线视频一区二区 | av.com在线| 免费视频你懂的 | 久久久久久久久久福利 | 精久久久久 | 日韩欧美高清一区二区三区 | 国产精品一区二区av影院萌芽 | 成人h视频在线播放 | 亚洲人片在线观看 | 日韩中文字幕免费视频 | 久久精选 | 欧美色伊人 | 日日干天夜夜 | 色小说av | 激情欧美日韩一区二区 | 日韩午夜电影网 | 日韩激情在线 | 色婷婷啪啪免费在线电影观看 | 亚洲九九 | 久久国产精品99久久久久久丝袜 | 美女久久 | 日韩大片在线免费观看 | 精品福利在线视频 | 热久久精品在线 | 日韩欧美精品在线观看视频 | 日韩av资源在线观看 | 亚洲国产精品久久久久 | 精品久久久久一区二区国产 | 国产精品免费视频网站 | 成人免费视频网址 | 一区二区 不卡 | 国产一区免费 | 香蕉视频亚洲 | 国产伦理剧 | 亚洲欧美少妇 | 美女露久久 | 色婷婷成人网 | 日韩电影在线一区二区 | 欧美精品久久久久久久久久丰满 | 国产视频欧美视频 | 国产一区二区在线免费播放 | 99久久电影 | 99热国内精品| 91福利在线导航 | 日韩在线中文字幕 | 色播99| 成人网在线免费视频 | 久久久久亚洲精品成人网小说 | 日本精品xxxx | 午夜在线观看 | 国产精品成人国产乱一区 | 福利网在线 | 国产黄色精品在线观看 | 亚洲午夜精品福利 | 色综合天天色综合 | 亚洲人成人天堂h久久 | 国产美女免费看 | av中文字幕亚洲 | 成人高清在线观看 | 久久人人爽人人爽人人片av软件 | 99久久婷婷国产一区二区三区 | www久久久久 | 不卡国产在线 | 久久呀| 婷婷六月天综合 | 天堂av高清 | 91精品在线免费 | 少妇bbbb揉bbbb日本 | 免费在线观看毛片网站 | 国产一区电影在线观看 | 国产精品久久99综合免费观看尤物 | 亚洲精品久久久久久久蜜桃 | 精品人人人人 | 日韩精品一区二区三区中文字幕 | 人人爽久久涩噜噜噜网站 | 在线精品视频免费播放 | 成人黄色在线看 | 人人射人人爽 | 色噜噜狠狠狠狠色综合久不 | 五月天久久综合 | 国产精品综合av一区二区国产馆 | 精品美女在线观看 | 国产小视频你懂的在线 | 99视频播放 | 婷婷香蕉| 国产香蕉97碰碰久久人人 | 西西人体www444 | 中文字幕网址 | 亚洲国产欧美在线看片xxoo | 亚洲在线视频免费 | 久久久999 | 97人人模人人爽人人喊网 | www黄色软件 | 狠狠插狠狠干 | 国产不卡一 | 九九九热 | 久99精品| 中文在线免费观看 | 久久成人亚洲欧美电影 | 在线观看91精品国产网站 | 久草在线视频免费资源观看 | 亚洲精品久久久蜜桃直播 | 中文字幕人成不卡一区 | 亚洲最大的av网站 | 91少妇精拍在线播放 | 国产三级香港三韩国三级 | 日本久久高清视频 | 天堂av在线 | a黄色影院 | 亚洲综合激情网 | 国产成人精品女人久久久 | 日日精品 | 色鬼综合网 | 亚洲自拍偷拍色图 | 久久久久久高潮国产精品视 | 国产91精品一区二区麻豆亚洲 | 亚洲激情国产精品 | 久久精品中文字幕免费mv | 午夜黄色 | 国产91在线免费视频 | 久色免费视频 | 最近日本字幕mv免费观看在线 | 麻豆视频在线 | 99热手机在线 | 国产精品视频免费 | 日韩免费一区 | 欧美a视频 | 久久婷婷精品视频 | 色婷婷综合久久久中文字幕 | 18国产精品白浆在线观看免费 | av丝袜在线 | 91免费黄视频 | 成人av网址大全 | 天天操操操操操 | 久久国语 | 欧美午夜理伦三级在线观看 | 日韩久久一区二区 | 欧美疯狂性受xxxxx另类 | 亚洲一区久久 | 国产美女搞久久 | 欧美亚洲专区 | 欧美男女爱爱视频 | 天天天色 | 久久综合亚洲鲁鲁五月久久 | 国产手机精品视频 | 日韩最新av在线 | 国产成人一区二区三区久久精品 | 欧美动漫一区二区三区 | 97精品久久| 欧美精品久久久久 | 国产麻豆精品久久一二三 | 成人永久免费 | 91亚洲狠狠婷婷综合久久久 | 在线免费观看一区二区三区 | 亚洲国产一区二区精品专区 | 日韩欧美一区二区在线观看 | 久久久久久久久久久黄色 | 中文字幕在线中文 | 中文字幕中文字幕在线中文字幕三区 | 国产自在线 | 美女在线免费观看视频 | 欧美日韩一区二区三区视频 | 欧美亚洲精品在线观看 | 国产精品 久久 | 成人免费在线播放视频 | 欧美精品久久久久久久久久白贞 | 国产亚洲精品bv在线观看 | 成人黄大片 | 中文字幕一区在线观看视频 | 在线91视频 | 亚洲婷婷网 | www.色在线| 国语精品免费视频 | 日韩特级片 | 日本美女xx | 8x成人免费视频 | 亚洲高清视频在线 | 97视频久久久 | 人成电影网 | 特级毛片在线 | 亚洲激情av | 日韩精品一二三 | 免费韩国av | 国产亚洲日 | 久久综合一本 | 狠狠精品 | 色综合久久久久综合 | 欧美日韩xx | 国产成人福利在线 | 午夜视频欧美 | 久久夜色精品国产欧美乱 | 在线观看午夜 | 最近最新最好看中文视频 | 中文字幕第 | 欧美成人在线免费观看 | 国产成人一区二区啪在线观看 | 国产一级在线免费观看 | 久久久久久久久久久久影院 | 免费视频xnxx com | 91爱爱视频| av在线之家电影网站 | 91人人视频在线观看 | 国产精品av免费观看 | 久草精品资源 | 2022国产精品视频 | 亚洲综合成人婷婷小说 | 黄色看片| 最近日本韩国中文字幕 | 国产亚洲精品成人av久久影院 | 九九欧美视频 | 伊人永久 | 亚洲欧美视屏 | 国产精品乱码久久 | 色视频在线免费 | 国产91精品一区二区麻豆亚洲 | 正在播放 久久 | 91麻豆精品国产91久久久久久 | 国产美女永久免费 | 国产老妇av | 日韩欧美在线不卡 | 亚洲电影久久久 | 在线黄色免费 | 香蕉视频在线免费 | 亚洲精品视频在线观看视频 | 激情婷婷 | 免费国产在线视频 | 日韩a级免费视频 | av线上看| 伊人五月婷| 午夜精品剧场 | 国产福利免费在线观看 | 免费在线一区二区 | 2019av在线视频 | 国产精久久久久久妇女av | 97视频免费观看 | 91麻豆精品国产91久久久无需广告 | 五月婷婷丁香色 | 99国产情侣在线播放 | 日韩电影一区二区在线观看 | 超碰在线cao| 久久深夜福利免费观看 | 久久国产亚洲精品 | 欧美色图狠狠干 | 婷婷5月色| 欧美国产精品一区二区 | 日本韩国精品在线 | 最新精品视频在线 | 日韩视频一区二区 | 91精品国产91p65 | 欧美一区二区三区在线看 | 9999国产精品 | 色播激情五月 | 国产亚洲一区二区在线观看 | 中国精品一区二区 | 美女视频一区二区 | 五月婷婷开心 | av色影院 | 久久精品99国产精品酒店日本 | 免费精品人在线二线三线 | 天天操月月操 | 激情欧美国产 | 在线免费观看涩涩 | 久久99亚洲网美利坚合众国 | 免费激情网 | 丝袜少妇在线 | 91亚洲影院 | 国产精品一区二区电影 | 国产精品嫩草影院123 | 日日躁天天躁 | 亚洲国产午夜视频 | 天堂视频中文在线 | 91精品天码美女少妇 | 国产对白av | 三级av中文字幕 | 中文字幕久久亚洲 | 黄色成人小视频 | 狠狠狠狠狠狠狠狠 | 尤物一区二区三区 | 亚洲在线成人精品 | 97av色| 黄色av一区 | 99国产精品久久久久久久久久 | 五月天久久激情 | 国产一区精品在线观看 | 久久精品视频18 | 国产日韩在线一区 | 高潮毛片无遮挡高清免费 | 麻豆传媒在线免费看 | 最近中文字幕视频完整版 | 亚洲精品国产精品乱码不99热 | 夜夜摸夜夜爽 | 91麻豆看国产在线紧急地址 | 一性一交视频 | 国产中文字幕一区二区三区 | 成人免费视频网站 | 久综合网| 99视频在线观看免费 | 国产成人黄色在线 | 日韩精品一区二区三区在线播放 | 精品国产美女在线 | 亚洲精品视频在线播放 | 黄色免费在线看 | 九色在线视频 | 有没有在线观看av | 欧美福利视频 | 人人干人人做 | 欧美色888 | 久久久久久久网站 | 99热这里只有精品免费 | 色婷婷免费视频 | 精品在线你懂的 | 亚洲精品国产精品国产 | 天天做天天爱天天综合网 | 一本到视频在线观看 | www.91av在线 | 五月天六月婷 | 午夜精品福利一区二区 | 日本免费一二三区 | 日本在线观看中文字幕无线观看 | 国产电影一区二区三区四区 | 日韩在线激情 | 在线播放国产精品 | 成人中文字幕+乱码+中文字幕 | 久久久免费毛片 | 日韩精品视频第一页 | 国产福利91精品一区 | 精品视频国产一区 | 久久精品永久免费 | 456成人精品影院 | 亚洲激情在线观看 | 91成年人网站 | 九九热只有这里有精品 | 美女在线免费观看视频 | 国产视频精品久久 | 成年人在线观看视频免费 | 久草影视在线 | 四虎在线观看视频 | 婷婷伊人综合亚洲综合网 | 国产精品不卡一区 | 五月天亚洲综合 | 在线国产欧美 | 91片网 | av中文字幕免费在线观看 | 久久久久五月 | 亚洲理论在线观看电影 | 成人午夜片av在线看 | 国产精品男女视频 | 在线观看中文字幕网站 | 久久综合久久综合这里只有精品 | 丁香婷婷成人 | 在线精品在线 | 98涩涩国产露脸精品国产网 | 蜜臀av性久久久久蜜臀av | 天天艹天天干天天 | 国产玖玖在线 | 99精品国产高清在线观看 | 国产精品视频免费在线观看 | 成人va天堂 | 国产成人精品国内自产拍免费看 | 欧美精品做受xxx性少妇 | 成人一区在线观看 | 日日操网站 | 91看片淫黄大片一级在线观看 | 2023年中文无字幕文字 | 99国产精品久久久久老师 | 在线不卡中文字幕播放 | 亚洲乱码精品久久久久 | 天天操网址| 超碰在线1 | 伊人永久| 97电影在线 | 在线观看91精品国产网站 | 久久久国产精品一区二区三区 | 久久久高清免费视频 | 亚洲高清在线精品 | 美女免费黄网站 | www国产亚洲精品 | 久久免费视频国产 | 五月天婷婷视频 | av不卡网站| 在线欧美日韩 | 国产一区在线精品 | 久久午夜国产精品 | 国产精品欧美久久久久无广告 | 国产免费av一区二区三区 | 99性视频| 日韩大片免费观看 | wwwwwww黄| 西西人体4444www高清视频 | 亚洲播放一区 | 狠狠久久| 亚洲视频免费在线观看 | 国产精品国产三级在线专区 | a级片韩国 | 亚洲一级电影在线观看 | 色综合天天综合网国产成人网 | 色五月情| 亚洲女欲精品久久久久久久18 | 亚洲1区 在线| 黄av免费| 手机看片中文字幕 | 久av电影| 色婷婷激情综合 | 亚洲国产欧美一区二区三区丁香婷 | 一本一本久久a久久精品综合小说 | 国产精品a久久 | 成年人在线观看网站 | a v在线视频| 成人免费在线观看电影 | 韩国av一区| 日韩高清一二区 | 国产成人久久av977小说 | 二区三区在线观看 | 国产精品自在线拍国产 | 天天射天天干天天插 | 五月天久久婷婷 | 中文字幕av一区二区三区四区 | 国产偷在线 | 亚洲精品国 | 999国产精品视频 | 日韩av电影中文字幕 | 黄色软件大全网站 | 国产成人福利在线观看 | 日本在线成人 | 国产精品 日韩 | 国产专区在线看 | 精品国产伦一区二区三区免费 | 久久天天躁狠狠躁亚洲综合公司 | 精品国内自产拍在线观看视频 | 国产综合在线观看视频 | 日p视频 | 亚洲成av人片在线观看香蕉 | 成人午夜电影在线观看 | 91精品国产成人观看 | 人人射av| a级片久久久 | 国产成人亚洲在线观看 | av电影在线不卡 | 日精品在线观看 | 成人一区电影 | 97人人爽人人 | 国产成人精品一区一区一区 | 久久99久久99精品免视看婷婷 | av黄色一级片 | 中文字幕一区二区三区四区在线视频 | 欧美日韩激情视频8区 | 依人成人综合网 | 免费看片成人 | 免费观看国产成人 | 亚洲影院天堂 | 婷婷色网站 | 免费高清看电视网站 | 热re99久久精品国产66热 | 色是在线视频 | av电影av在线 | 亚洲视频每日更新 | 九九免费在线观看 | 国产精品免费久久久久 | 91精品国产电影 | 狠狠色伊人亚洲综合网站色 | 色六月婷婷 | 在线 欧美 日韩 | 久久精品首页 | 韩国精品福利一区二区三区 | 久久久国产99久久国产一 | 久国产在线播放 | 99爱国产精品 | 欧美精品一区在线发布 | 欧美日韩国产网站 | 国产91国语对白在线 | 黄色特级毛片 | 久久久久亚洲国产 | 欧美性大战 | 欧美成人黄色片 | 国产一区播放 | 日韩免费视频线观看 | 黄色免费电影网站 | 色婷婷综合久久久久 | 91专区在线观看 | 国产一区二区在线免费观看 | 中文字幕在线观看免费高清完整版 | 中文字幕高清在线播放 | 日本三级久久 | 成人网在线免费视频 | 日韩欧美在线综合网 | 国产夫妻自拍av | 亚洲精品视频第一页 | 亚洲成av片人久久久 | 99精品视频99 | 五月天天色 | 婷婷五月在线视频 | 日韩中文字幕在线不卡 | 欧美一级专区免费大片 | 91亚洲视频在线观看 | 99精品一级欧美片免费播放 | 国产精品久久久久久一区二区三区 | 欧美日韩免费观看一区=区三区 | 伊人激情网 | 亚洲人在线7777777精品 | 中文字幕国内精品 | 色资源在线 | 在线观看国产一区 | 香蕉久草在线 | 91传媒激情理伦片 | 久久精品成人欧美大片古装 | 99久久er热在这里只有精品15 | 午夜av在线播放 | 亚洲综合色婷婷 | 在线免费性生活片 | 成人a视频片观看免费 | 久久久国产99久久国产一 | 麻豆国产在线播放 | 成人免费视频播放 | 在线观看免费一级片 | 亚洲精品乱码久久久久久蜜桃动漫 | 狠狠夜夜 | 午夜18视频在线观看 | 色资源网在线观看 | 亚洲丁香久久久 | 国产精品九九视频 | 韩国av三级| 91九色国产蝌蚪 | 超碰在线9| 亚洲免费高清视频 | 97操碰| www.伊人网 | 久久久综合九色合综国产精品 | 999亚洲国产996395 | 免费看一级特黄a大片 | 日韩中文字幕视频在线 | 国产成人精品亚洲a | 手机看片| 久久久久久久久久免费 | 99久久婷婷国产综合精品 | 欧美精品乱码99久久影院 | 日韩手机视频 | 免费在线成人av电影 | 久久精品视频在线免费观看 | 欧美在线日韩在线 | 成人av网站在线观看 | 久久公开免费视频 | 91x色 | 天天色天天上天天操 | 成人天堂网 | 四虎亚洲精品 | 欧洲激情在线 | 国产午夜精品一区二区三区 | 国产一二区免费视频 | 久久久电影| 国产精品11 | 狠狠gao| 欧美精品生活片 | 成人一区电影 | 国产资源免费在线观看 | 丁香九月婷婷 | 成人在线视频论坛 | 国产精品激情在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久精品亚洲精品国产欧美 | 亚洲天堂网视频在线观看 | 久久精品电影院 | 视频 国产区 | 成年免费在线视频 | 国产在线综合视频 | 激情综合亚洲精品 | 久久天天综合网 | 欧美性视频网站 | 成人啊 v| 狠狠操狠狠干天天操 | 国产日韩精品欧美 | 国产免费av一区二区三区 | 国产精品久久久影视 | 久草在线视频精品 | 久久草草影视免费网 | 久久麻豆精品 | 在线欧美最极品的av | 日韩视频免费 | 在线中文字母电影观看 | 日日躁夜夜躁aaaaxxxx | 亚洲爽爽网 | 97在线观看免费高清完整版在线观看 | 在线黄频| 午夜av日韩 | 热99久久精品| 最近日本mv字幕免费观看 | 91大神精品视频在线观看 | 亚洲永久av | 亚洲天堂网在线视频观看 | 色噜噜狠狠色综合中国 | 97电影在线 | 最近中文字幕免费 | 亚洲最新视频在线播放 | 免费久草视频 | 久久小视频 | 黄色在线观看免费 | 日韩欧美在线综合网 | 国产精品中文 | 国产最顶级的黄色片在线免费观看 | 最近的中文字幕大全免费版 | 蜜臀久久99精品久久久久久网站 | 国产精美视频 | 9在线观看免费高清完整版在线观看明 | 国产在线一线 | 91九色蝌蚪在线 | 99 视频 高清 | 夜夜视频欧洲 | 成片免费观看视频 | 视频一区二区视频 | 摸阴视频| 在线综合 亚洲 欧美在线视频 | 国产精品久久久久久久午夜片 | 人人干人人上 | 中文字幕久久亚洲 | 亚洲伦理中文字幕 | 99久久精品国产网站 | 91亚洲综合| 黄色小网站免费看 | 99视频精品免费观看, | 欧美日韩在线观看视频 | 日韩免费在线视频 | 国产精品av在线 | 不卡av在线 | www.狠狠插.com | 久久免视频| 日韩xxxbbb| 中文字幕a在线 | 亚洲国产一区二区精品专区 | 一二区av | 国产一二三四在线视频 | 国产欧美日韩一区 | 国产中文字幕一区 | 色先锋资源网 | 在线观看国产区 | 看av免费| 九九免费观看全部免费视频 | 日韩电影在线观看一区二区三区 | 99国产精品久久久久老师 | 手机在线日韩视频 | 成人欧美一区二区三区黑人麻豆 | 日韩 精品 一区 国产 麻豆 | 91中文在线 | 中文字幕一区二区三区视频 | 欧美精品少妇xxxxx喷水 | 中文字幕日韩精品有码视频 | 午夜在线免费观看视频 | 国产视频一区二区在线 | 色综合久久久久 | 9免费视频 | 精品人人人 | 玖玖在线观看视频 | 国产午夜在线观看视频 | 国产精品女主播一区二区三区 | 国产美女精品人人做人人爽 | 国产一区在线视频 | 人人添人人 | 久久视频这里只有精品 | 日韩簧片在线观看 | 天天插天天干 | 91视频国产高清 | 国产精品免费一区二区三区在线观看 | 久插视频 | 99视频国产精品免费观看 | 国产成人黄色网址 | 国语久久| 视频在线99re| 91超级碰| 丁香资源影视免费观看 | 中文字幕 婷婷 | 99r精品视频在线观看 | 五月激情亚洲 | 亚洲精品黄色在线观看 | 亚洲电影图片小说 |