久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Springboot之整合Socket連接案例

瀏覽:5日期:2023-03-26 17:10:20

Socket連接與硬件通信

一、如何讓socket隨著springboot項目一起啟動

SpringBoot中CommandLineRunner的作用:平常開發中有可能需要實現在項目啟動后執行的功能,SpringBoot提供的一種簡單的實現方案就是添加一個model并實現CommandLineRunner接口,實現功能的代碼放在實現的run方法中

具體實現

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.CommandLineRunner;import org.springframework.stereotype.Component;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;/** * @author 易水●墨龍吟 * @Description * @create 2019-04-14 23:40 */@Componentpublic class TestRunner implements CommandLineRunner { @Autowired private SocketProperties properties; @Override public void run(String... args) throws Exception { ServerSocket server = null; Socket socket = null; server = new ServerSocket(properties.getPort()); System.out.println('設備服務器已經開啟, 監聽端口:' + properties.getPort()); ThreadPoolExecutor pool = new ThreadPoolExecutor(properties.getPoolCore(),properties.getPoolMax(),properties.getPoolKeep(),TimeUnit.SECONDS,new ArrayBlockingQueue<Runnable>(properties.getPoolQueueInit()),new ThreadPoolExecutor.DiscardOldestPolicy() ); while (true) { socket = server.accept(); pool.execute(new ServerConfig(socket)); } }}

此處使用了自定義的線程池,提高對于socket的客戶端處理能力。

二、自定義配置并使用

此處將socket的端口和線程池的一些配置放到 application.yml中使用,方便使用和修改

# Socket配置socket: # 監聽端口 2323 port: 2323 # 線程池 - 保持線程數 20 pool-keep: 20 # 線程池 - 核心線程數 10 pool-core: 10 # 線程池 - 最大線程數 20 pool-max: 30 # 線程隊列容量 10 pool-queue-init: 10

import lombok.Getter;import lombok.Setter;import lombok.ToString;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.stereotype.Component;/** * @author 易水●墨龍吟 * @Description * @create 2019-04-18 22:35 */@Setter@Getter@ToString@Component@Configuration@PropertySource('classpath:application.yml')@ConfigurationProperties(prefix = 'socket')public class SocketProperties { private Integer port; private Integer poolKeep; private Integer poolCore; private Integer poolMax; private Integer poolQueueInit;}三、Socket對于客戶端發來的信息的處理和重發機制

當客戶端端連接之后發送信息,如果超時未發送,將會關閉,發送數據有異常將會返回給客戶端一個error,讓客戶端在發送一次數據。

import com.farm.config.socket.resolve.MessageChain;import com.farm.service.EnvironmentService;import com.farm.service.impl.EnvironmentServiceImpl;import java.io.*;import java.net.Socket;import java.net.SocketException;import java.net.SocketTimeoutException;import java.util.Map;/** * @author 易水●墨龍吟 * @Description * @create 2019-04-14 23:21 */public class ServerConfig extends Thread { private Socket socket; public ServerConfig(Socket socket) { this.socket = socket; }// 獲取spring容器管理的類,可以獲取到sevrice的類 private EnvironmentService service = SpringUtil.getBean(EnvironmentServiceImpl.class); private String handle(InputStream inputStream) throws IOException, DataFormException { byte[] bytes = new byte[1024]; int len = inputStream.read(bytes); if (len != -1) { StringBuffer request = new StringBuffer(); request.append(new String(bytes, 0, len, 'UTF-8')); System.out.println('接受的數據: ' + request); System.out.println('from client ... ' + request + '當前線程' + Thread.currentThread().getName()); Map<String, String> map = MessageChain.out(request.toString()); System.out.println('處理的數據' + map); Integer res = service.addEnvironment(map); if (res == 1) {return 'ok'; } else {throw new DataFormException('數據處理異常'); } } else { throw new DataFormException('數據處理異常'); } } @Override public void run() { BufferedWriter writer = null; try { // 設置連接超時9秒 socket.setSoTimeout(9000); System.out.println('客戶 - ' + socket.getRemoteSocketAddress() + ' -> 機連接成功'); InputStream inputStream = socket.getInputStream(); writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String result = null; try {result = handle(inputStream);writer.write(result);writer.newLine();writer.flush(); } catch (IOException | DataFormException | IllegalArgumentException e) {writer.write('error');writer.newLine();writer.flush();System.out.println('發生異常');try { System.out.println('再次接受!'); result = handle(inputStream); writer.write(result); writer.newLine(); writer.flush();} catch (DataFormException | SocketTimeoutException ex) { System.out.println('再次接受, 發生異常,連接關閉');} } } catch (SocketException socketException) { socketException.printStackTrace(); try {writer.close(); } catch (IOException ioException) {ioException.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } finally { try {writer.close(); } catch (IOException e) {e.printStackTrace(); } } }}

在此處有一個坑,如果客戶端是用C/C++編寫的,必須使用如下方法:

byte[] bytes = new byte[1024];int len = inputStream.read(bytes);

如果使用readLine或者 DataInputStream dataInputStream =new DataInputStream(socket.getInputStream())這樣會出現使用TCP連接助手,客戶端發送數據收不到。

四、如何在普通類中使用Spring注入類

這里需要使用一個工具類。

import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;/** * @author 易水●墨龍吟 * @Description * @create 2019-04-15 0:01 */@Componentpublic class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (SpringUtil.applicationContext == null) { SpringUtil.applicationContext = applicationContext; } } /** * 獲取applicationContext * @return */ public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 通過name獲取 Bean. * @param name * @return */ public static Object getBean(String name){ return getApplicationContext().getBean(name); } /** * 通過class獲取Bean. * @param clazz * @param <T> * @return */ public static <T> T getBean(Class<T> clazz){ return getApplicationContext().getBean(clazz); } /** * 通過name,以及Clazz返回指定的Bean * @param name * @param clazz * @param <T> * @return */ public static <T> T getBean(String name,Class<T> clazz){ return getApplicationContext().getBean(name, clazz); }}

補充:springboot下websocket前臺后端數據長連接

首先導入依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-messaging</artifactId> </dependency>

spring-security-messaging 是后面繼承 AbstractSecurityWebSocketMessageBrokerConfigurer需要用到的依賴

WebSocketConfig

@Configuration@EnableWebSocketMessageBroker //此注解表示使用STOMP協議來傳輸基于消息代理的消息,此時可以在@Controller類中使用@MessageMapping public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { /** * 注冊 Stomp的端點 * addEndpoint:添加STOMP協議的端點。這個HTTP URL是供WebSocket或SockJS客戶端訪問的地址 * withSockJS:指定端點使用SockJS協議 */ registry.addEndpoint('/websocket/tracker') //物流消息通道, .setAllowedOrigins('*') //允許跨域,里面路徑可以設定 .withSockJS() //指定協議 .setInterceptors(httpSessionHandshakeInterceptor()) ; //設置攔截器() } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { /** * 配置消息代理 * 啟動簡單Broker,消息的發送的地址符合配置的前綴來的消息才發送到這個broker */ registry.enableSimpleBroker('/topic','/user'); } //攔截器 @Bean public HandshakeInterceptor httpSessionHandshakeInterceptor() { return new HandshakeInterceptor() { @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {//可以在這里先判斷登錄是否合法return true; } @Override public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) { //握手成功后, } }; }}

WebsocketSecurityConfiguration

@Configurationpublic class WebsocketSecurityConfiguration extends AbstractSecurityWebSocketMessageBrokerConfigurer { @Override protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) { messages .nullDestMatcher().authenticated() .simpDestMatchers('/topic/**').authenticated() .simpDestMatchers('/user/**').authenticated() .simpTypeMatchers(SimpMessageType.MESSAGE, SimpMessageType.SUBSCRIBE).denyAll() // catch all .anyMessage().denyAll(); } /** * Disables CSRF for Websockets. */ @Override protected boolean sameOriginDisabled() { return true; }}

WebSocketResource

package com.gleam.shopmall.web.rest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationListener;import org.springframework.messaging.handler.annotation.MessageMapping;import org.springframework.messaging.handler.annotation.SendTo;import org.springframework.messaging.simp.SimpMessageHeaderAccessor;import org.springframework.messaging.simp.SimpMessageMappingInfo;import org.springframework.messaging.simp.SimpMessageSendingOperations;import org.springframework.stereotype.Controller;import org.springframework.web.socket.messaging.SessionDisconnectEvent;@Controllerpublic class WebSocketResource { private static final Logger log = LoggerFactory.getLogger(WebSocketResource.class); @Autowired SimpMessageSendingOperations messagingTemplate; //此方法適用于網頁聊天室,從前端接收數據,返回訂閱者(前端) @MessageMapping('/welcome') //指定要接收消息的地址,類似@RequestMapping @SendTo('/topic/getResponse') //默認消息將被發送到與傳入消息相同的目的地,但是目的地前面附加前綴(默認情況下為“/topic”} public String say(String message) throws Exception { return message; } //發送指定用戶(直接從后端發送數據到前端) public void sendToUser(String login,String channel, String info) { log.debug('[ToUser]WEBSOCKET發送消息, username={}, info={}', login, info); this.messagingTemplate.convertAndSendToUser(login, channel, info); log.debug('[ToUser]WEBSOCKET發送消息:完成'); } //發送所有訂閱的(直接從后端發送數據到前端) public void send(String channel, String info) { log.debug('[ToAll]WEBSOCKET發送消息, info={}', info); // this.messagingTemplate.convertAndSend(channel, info); this.messagingTemplate.convertAndSend('/topic/getResponse', '接收到了嗎?'); log.debug('[ToAll]WEBSOCKET發送消息:完成'); }}

前端html

<!DOCTYPE html><html xmlns:th='http://www.thymeleaf.org'><head> <meta charset='UTF-8' /> <script src='http://cdn.jsdelivr.net/sockjs/0.3.4/sockjs.min.js'></script> <script src='https://cdn.bootcss.com/stomp.js/2.3.3/stomp.js'></script> <script src='http://code.jquery.com/jquery-1.7.2.min.js'></script> <script src='http://pv.sohu.com/cityjson?ie=utf-8'></script> <title>Spring Boot+WebSocket+廣播式</title> <script type='text/javascript'> var stompClient = null; function setConnected(connected) { document.getElementById(’connect’).disabled = connected; document.getElementById(’disconnect’).disabled = !connected; document.getElementById(’conversationDiv’).style.visibility = connected ? ’visible’ : ’hidden’; $(’#response’).html(); } function connect() { // websocket的連接地址,此值等于WebSocketConfig中registry.addEndpoint('/websocket/tracker').withSockJS()配置的地址, //這里如果是微服務或者遠端,需要全路徑 var socket = new SockJS(’/websocket/tracker’); //1 stompClient = Stomp.over(socket);//2 stompClient.connect({}, function(frame) {//3setConnected(true);console.log(’開始進行連接Connected: ’ + frame);// 客戶端訂閱消息的目的地址:此值等于WebSocketResource中@SendTo('/topic/getResponse')注解的里配置的值stompClient.subscribe(’/topic/getResponse’, function(respnose){ //4 showResponse(respnose.body);}); }); } function disconnect() { if (stompClient != null) {stompClient.disconnect(); } setConnected(false); console.log('Disconnected'); } function sendName() { var name = $(’#name’).val(); stompClient.send('/welcome', {}, returnCitySN[’cip’] +':'+name);// JSON.stringify(name) } function showResponse(message) { var response = $('#response'); response.html(message+'<br>' + response.html()); } </script></head><body onload='disconnect()'><noscript><h2 style='color: red'>貌似你的瀏覽器不支持websocket</h2></noscript><div> <div> <button onclick='connect();' style='color: red'>連接</button> <button disabled='disabled' onclick='disconnect();'>斷開連接</button> </div> <div id='conversationDiv'> <label>輸入內容</label><input type='text' /> <button onclick='sendName();'>發送</button> <p id='response'></p> </div></div></body></html>```

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Spring
相關文章:
主站蜘蛛池模板: 热久久这里只有精品 | 91一区二区| 国产伦精品一区二区三区四区视频 | 国产探花| 国产www视频| 亚洲成人在线视频播放 | 日本黄色一级片免费看 | 久久国产一区二区 | 九九热在线观看 | 久久亚洲天堂 | 亚洲人免费 | 亚洲精彩视频 | 午夜在线观看影院 | 亚洲在线视频 | 日韩一区二区视频在线 | 欧美日韩精品电影 | 欧美成人精品一区 | 久久精品高清 | 最近最新中文字幕 | 久久精品欧美 | 成人黄色电影在线观看 | 91精品国产九九九久久久亚洲 | 成人av播放| 中文字幕日韩在线 | 欧美色综合 | 精品国产91| 亚洲精品久久久久久久久 | 成年免费观看 | 欧美一级黄色片 | 成人片免费看 | 一级毛片在线免费看 | 国产精品成人在线观看 | 欧美日韩综合一区 | 91亚洲国产成人久久精品网站 | 9l蝌蚪porny中文自拍 | 欧美自拍视频在线 | www.午夜视频| 久久高清 | 欧美一级特黄aaaaaa大片在线观看 | 97成人精品视频在线观看 | 国产91 在线播放 | 玖玖国产精品视频 | 日韩一区二区在线观看 | 一区二区免费视频 | 91精品一区二区 | 久久精品视频一区 | 91亚洲视频在线观看 | 日韩欧美~中文字幕 | 国产精品美女av | 夜夜骑天天射 | 久久精品国产精品亚洲 | h片在线看 | 亚洲国产精品一区 | 国产91久久久久 | 亚洲高清一区二区三区 | 久草视频在线播放 | 在线观看日韩精品 | 成年人网站在线免费观看 | 国产一区二区在线免费观看 | 亚洲精美视频 | 亚洲精品成人久久久 | 国产不卡视频 | 一级片黄片毛片 | 在线看免费观看日本 | 久色 | 黄色日批视频 | 黄色网免费看 | 亚洲一区二区三区高清 | 日日干,天天干 | 国产视频久久久久久 | 中文字幕加勒比 | 91精品国产日韩91久久久久久 | 91精品久久久久久久久中文字幕 | 亚洲一级黄色 | 欧美一级电影免费观看 | 99精品久久久久久久免费 | 亚洲视频免费网站 | 中文字幕在线免费观看 | 国产精品污www在线观看 | 男女免费在线观看视频 | 国产成人免费视频网站高清观看视频 | 国产精品久久久久久久久久久久久久 | yy6080久久伦理一区二区 | 婷婷久久综合九色综合绿巨人 | 羞羞av在线| 亚洲国产婷婷香蕉久久久久久99 | 亚洲www啪成人一区二区 | 91久久精品一区二区二区 | 免费观看黄视频 | 亚洲欧洲精品在线 | 久久久久综合狠狠综合日本高清 | 成人在线影视 | 精品无码久久久久国产 | 91亚洲高清| 美女主播精品视频一二三四 | 国产精品美女久久 | 国产免费一级特黄录像 | 91性高湖久久久久久久久_久久99 | 日日摸日日爽 | 国产一级片| 国产在线观看免费av | 日本久久精品 | 蜜桃av网址 | 一级黄色片看看 | 国产一区二区三区免费播放 | 日韩欧美二区 | 精品一区二区三区在线视频 | 欧美日韩综合精品 | 麻豆乱码国产一区二区三区 | 三级无遮挡污在线观看 | 欧美日韩一级二级三级 | 亚洲一区久久久 | 国产成人精品一区二区三区视频 | 日韩精品一区二区三区在线观看 | 成人在线精品 | 日本久久网站 | 国产精品日韩一区二区 | 日韩一区二区福利视频 | 欧美日韩国产一区二区 | 91精品视频在线播放 | 亚洲综合在线播放 | 国产伦精品一区二区三区四区视频 | 久久精品国产亚洲一区二区三区 | 欧美在线视频一区二区 | 激情欧美日韩一区二区 | 91久色 | 欧美日本国产 | 久久精品亚洲精品 | 一级人爱视频 | 日韩欧美国产一区二区 | 亚洲人人舔人人 | 亚洲www视频 | 国产午夜精品福利 | 欧美日韩福利 | 国产午夜精品久久久久久久 | 免费中文字幕 | a在线观看 | 国产精品日韩欧美一区二区三区 | 999视频在线免费观看 | 午夜精品一区二区三区在线观看 | 欧美激情精品久久久久久免费 | 91免费在线视频 | 日本在线观看网站 | 亚洲精品国产a久久久久久 国产毛片毛片 | 一区二区免费视频 | 国产精品免费一区二区三区四区 | 国产精品亚洲一区二区三区 | 久久一区 | 国内自拍偷拍视频 | 美女久久久 | jlzzjlzz亚洲日本少妇 | 欧美专区在线 | 日韩亚洲在线 | 久久久999成人 | 欧美精品免费在线 | 欧美精品福利视频 | 国产精品久久久久久久久久免费看 | 欧美视频亚洲视频 | 97超碰人人| 国产精品久久久久久久久久久久久久 | 国产一区二区三区欧美 | 久色视频在线 | 国产高清在线精品一区二区三区 | 免费观看av毛片 | 久久久久久九九 | 黄毛片网站 | 国产午夜精品一区二区三区嫩草 | 男女av在线| av综合站| 色婷婷导航 | 久久久国产日韩 | 国产91久久精品一区二区 | 免费视频一区 | 欧美一区不卡 | 夏同学福利网 | 日韩色av| av成人在线观看 | 成人在线国产 | 亚洲国产精品区 | 日韩中文字幕a | 天天操天天拍 | 操人在线观看 | www.蜜桃av.com| 欧美一区二区三区黄 | 亚洲精品一区在线观看 | 国产一级特黄 | 国产精品三级久久久久久电影 | 91社区在线高清 | 欧美日韩在线播放 | 久久精品久久久久 | 色播开心网| 一级免费毛片 | 中文字幕在线观看av | 亚洲欧美日韩国产综合 | 亚洲一区精品在线 | a免费在线观看 | 2022天天操 | 国产精品s色 | 亚洲国产一区二区在线观看 | 亚洲欧美网址 | 亚洲精品一区在线观看 | 久久黑人 | 久久一 | 亚洲国产一区二区三区四区 | 国产福利网站 | 国产片一区二区三区 | 久久久久一区二区 | 成人在线小视频 | 国产中文字幕在线观看 | 中国1级黄色片 | 国内精品一区二区三区视频 | 午夜窝窝| 亚洲免费视频网 | 成人激情视频在线观看 | 龙珠z在线观看 | 成人一级视频在线观看 | 精品久久久久久久久久久久久久久久久久久 | 亚洲精品久久久一区二区三区 | 亚洲三区在线观看 | 国产精品久久久久久久久久久免费看 | 欧美激情一区二区 | 国产精品久久久久久吹潮 | 亚洲视频在线免费观看 | 欧美精品一区二区三区蜜桃视频 | 欧美日韩国产一区二区三区不卡 | 天天操网| 亚洲国产一区在线 | 国产精品一区二区三 | 国产精品久久久久久久岛一牛影视 | 亚洲视频欧美视频 | 国产第一页在线播放 | 成人欧美 | 欧洲精品一区二区 | 国产精品久久久久久久岛一牛影视 | 日韩欧美在线中文字幕 | 亚洲一区二区三区高清 | 99爱爱视频 | 亚洲视频在线观看网址 | 久久国产精品无码网站 | 亚州成人 | 国产精品久久久久久久久久小说 | 精品一区二区久久久久久久网站 | 精品视频久久 | 中文字幕亚洲综合 | 黄色一级片看看 | 中文字幕成人 | 碰在线视频 | 密室大逃脱第六季大神版在线观看 | 久久骚| 日本高清中文字幕 | 成人免费毛片高清视频 | 岛国av免费观看 | 中文久久 | 久久99精品久久久久国产越南 | 日韩在线不卡一区 | 欧美大片一区二区 | 亚洲精品7777xxxx青睐 | 亚洲精品在线视频 | 日日鲁鲁 | 成人在线视频网站 | 91在线精品一区二区 | 欧美日韩精品在线一区 | 国产精品美女久久久久aⅴ国产馆 | 欧美日韩一区电影 | 黄色a三级 | 亚洲精品一区二区三区蜜桃久 | 亚洲精品视频区 | 成人av网站在线观看 | 毛片视频免费 | 国产欧美在线一区二区 | 国产黄色一级片 | 精品香蕉一区二区三区 | 精品久久久久一区二区国产 | 欧美一级久久 | 亚洲第一成人在线视频 | 久久人人爽人人爽人人片av不 | 中文字幕一区二区三区乱码在线 | 国产日韩精品视频 | 欧美午夜视频 | 成人午夜在线观看 | 一级欧美一级日韩 | 有码在线 | 亚洲综合色自拍一区 | 久久久久久影院 | 亚洲免费视频大全 | jizz中国zz女人18高潮 | 久久国产精品视频一区 | 国产视频福利在线 | 毛片真人毛毛片毛片 | 成人亚洲免费视频 | 成人免费xxxxxx视频 | 一级毛片在线免费看 | 精品在线视频观看 | 在线观看毛片网站 | 国产精品久久久久久久久久小说 | 国产一区免费 | 亚洲a人 | 精品国产一区二区三区成人影院 | a视频在线观看 | 99久久久| 日本中文字幕视频 | 精品国产不卡一区二区三区 | 日本日韩中文字幕 | 国产精品亚洲第一区在线暖暖韩国 | 国产日韩欧美视频 | 性视频一区二区 | 日韩一区二区在线观看 | 北条麻妃国产九九九精品小说 | av一区二区在线播放 | 国产 日韩 欧美 中文 在线播放 | 亚洲国产精品一区二区久久,亚洲午夜 | 天堂久久久久久 | 蜜臀久久99精品久久久无需会员 | 不卡一区 | 国产精品视频免费 | 偷拍自拍网站 | 波多野结衣一区二区三区高清 | 亚洲免费网站在线观看 | 久久亚洲国产 | 亚洲欧美激情视频 | 精品国产18久久久久久二百 | 日韩欧美在线一区二区 | 久久社区| 久久久久国 | 日韩有码在线播放 | 影视一区二区 | 国产最新视频 | 亚洲天堂久久 | 中文字幕国产视频 | 亚洲 欧美 另类 综合 偷拍 | 国产精品人人做人人爽 | 中文字幕亚洲一区二区va在线 | 国产精品久久综合 | 亚洲精美视频 | 国产成人精品午夜视频免费 | 欧美一区二区三区精品免费 | 99精品免费在线 | 国产一区在线免费观看 | 久久视频一区 | 欧美一级免费观看 | 韩日精品一区 | 亚洲精品一区中文字幕乱码 | 久久亚洲一区二区三区四区 | 精品国产成人 | 中文字幕亚洲综合久久久软件 | 精品福利在线视频 | 国产成人一级片 | 久综合网| 亚洲在线播放 | 国产精品永久 | 精品视频在线观看 | 欧美日韩国产不卡 | 日日夜夜天天 | 国产美女高潮 | 欧美 日韩 国产 成人 在线 | 欧美日韩一区二区三区在线观看 | 国产一区二区精品 | 国产日韩精品视频 | 综合久久综合久久 | av中文字幕在线播放 | 日韩最新网址 | 久久亚洲国产精品 | 国产裸体永久免费视频网站 | 99国产精品久久久久久久 | 国产亚洲精品久久久闺蜜 | 亚洲大尺度网站 | 久久久久久91亚洲精品中文字幕 | 国产精品一区三区 | 爱爱视频在线观看 | 黄色毛片在线看 | 99精品久久久 | 天堂亚洲 | 综合激情av | 国产精品一品二区三区的使用体验 | 高清国产一区二区三区四区五区 | 日韩中文在线视频 | 国产精品欧美久久久久一区二区 | 亚洲高清中文字幕 | 午夜午夜精品一区二区三区文 | 久久精品久久精品国产大片 | 免费av一区 | 久久伊人一区 | 337p亚洲欧洲 | 精品国产乱码久久久久久久软件 | 午夜久久久久 | 免费日韩成人 | 亚洲国产精品一区二区三区 | 国产欧美日韩一区 | 久久91精品国产91久久跳 | 精品国产91亚洲一区二区三区www | 国产成人精品综合 | 国产精品日本一区二区不卡视频 | 玖草在线视频 | 一区二区三区精品 | 亚洲精品视频在线 | 黄片毛片一级 | 精品视频久久 | 色黄视频在线观看 | 亚洲欧美在线观看 | 国产精品国产精品 | 人人做人人澡人人爽欧美 | 国产精品综合 | 国产综合亚洲精品一区二 | 特黄视频| 美女视频一区 | 精品免费国产 | 免费成人在线视频网站 | 国产精品久久久久久久午夜 | 伊人精品视频 | 毛片链接 | 国产97在线 | 免费 | 日韩精品中文字幕一区二区三区 | 天堂一区 | 国产成人高清视频 | 久久精品欧美一区二区三区不卡 | 亚洲精品二区三区 | 一级电影免费在线观看 | 亚洲成人中文字幕 | 国产精品久久久久久久久久久久久久 | 国产激情在线视频 | 国产a区| 天天操夜夜干 | 在线观看免费av的网址 | 欧美一区二区久久 | 久久精品网 | 国产精品久久久久久久电影 | 91一级| 91久色| 亚洲一级黄色 | 久久精品欧美一区二区三区麻豆 | 日本淫片| 91九色porny首页最多播放 | 亚洲一区久久 | 一区二区国产精品 | 午夜男人网 | 日日鲁鲁 | 欧美中文字幕一区二区 | 二区三区在线观看 | 日韩成人免费 | 精品国产乱码久久久久久久软件 | 中午字幕在线观看 | 成人1区2区| 日韩成人影院 | 欧洲精品在线观看 | 午夜国产| 欧美成人精品激情在线观看 | 成人免费一区二区三区视频网站 | 在线99| 国产精品中文字幕在线 | 亚洲一区二区高清视频 | 日韩av在线一区 | 国产精产国品一二三产区视频 | 国产精品一区二区久久久久 | 成人精品免费视频 | 91中文字幕一区 | 久久精品在线观看视频 | 久久久久网站 | 精品国产一区二区三区成人影院 | 成人av免费观看 | 国产日韩欧美一区二区在线观看 | 亚洲一区日韩 | 天天综合91 | 午夜在线观看视频网站 | aaa久久| 一区二区亚洲 | a在线v| 国产区最新 | 国产91富婆养生按摩会所 | 91资源在线 | 久久久夜夜夜 | 国产精品久久国产精品 | 国产乱码精品一区二区三区忘忧草 | 久久精品欧美 | 日韩精品免费在线视频 | 一区二区三区小视频 | 久久亚洲天堂 | 资源av| 欧美在线亚洲 | 久久色视频 | 搞黄免费视频 | 久久mm| 日韩欧美一区二区三区久久婷婷 | 亚洲精品91 | 精品国产一区二区三区成人影院 | 亚洲国产精品久久久久婷婷老年 | 中文字幕亚洲二区 | 国产精品美女久久久久aⅴ国产馆 | 欧美另类一二三四 | av成人在线观看 | 天天插天天操天天干 | 午夜国产视频 | 国产一区二区三区视频在线观看 | 日本精品一区 | 久久h| 蜜桃免费一区二区三区 | 国产成人av一区二区三区 | 一级黄色影片在线观看 | 精品影院 | 国产成人精品免费视频大全最热 | 中文字幕在线资源 | 国产视频中文字幕 | 久久久精品国产 | 一区二区三区国产免费 | 亚洲精品wwww | 日本免费网站 | 噜噜噜在线观看免费视频日本 | 欧美成人a∨高清免费观看 在线视频成人 | 成人性视频免费网站 | 狠狠艹| 国产1页 | 日韩视频在线免费观看 | 久久久精品久久久 | 国产成人在线播放 | 北条麻妃国产九九九精品小说 | 成人在线免费视频 | 日本日韩中文字幕 | 国产精品美女久久久久久久久久久 | 在线观看视频一区二区三区 | 久久欧美高清二区三区 | 欧美国产精品一区 | 欧美综合精品 | 国产精品成人观看视频国产奇米 | 我要看黄色一级大片 | 中文字幕视频一区 | 欧美视频三级 | 久热精品视频 | 久草免费在线 | 国产视频一区二区在线 | 国产农村妇女精品久久 | 久免费视频 | 欧美日韩在线播放 | 夜夜操天天干 | 日本成人小视频 | 97国产精品视频人人做人人爱 | 国产精品久久久久免费a∨ 欧洲精品一区 | 亚洲精品a| 爱爱免费视频网站 | 亚洲精品影院 | 先锋久久| 亚洲国产成人av | 国产精品久久久久永久免费观看 | 伊人青青久 | 成人日韩在线观看 | 亚洲一区二区三区免费看 | 伊人免费观看视频 | 激情国产| 日本一二三视频 | 伊人手机在线视频 | 国产精品一区二区免费 | 色毛片 | 男人天堂亚洲 | 高清av网站 | 91精品福利 | 欧美日韩在线精品 | 一区二区免费 | 久久1区| 亚洲每日更新 | 国产精品精品视频 | 日韩欧美亚洲 | 亚洲第一中文字幕 | 成人av播放 | 五月天婷婷在线视频 | 国产中文字幕在线播放 | 国产一区二区在线电影 | 九九综合九九 | 99久久精品免费看国产免费软件 | 一区二区三区免费在线观看 | 国产美女自拍视频 | 亚洲精品久久久久久久久久久 | 婷婷色国产偷v国产偷v小说 | 国产中文字幕亚洲 | 欧美亚洲性视频 | 欧美.com| 精品国产一区二区三区在线观看 | 一区二区三区四区免费 | 中文精品在线 | xx视频在线观看 | 久久国产精品久久久久久久久久 | 久久九九 | 欧美自拍网站 | 国产精品二区三区 | 日韩欧美视频 | 亚洲高清一区二区三区 | 免费视频一区二区 | 中文在线一区二区 | 这里只有精品在线 | 久久久久久1 | 国产成人一级毛片 | 国产在线观看av | 伊人操操 | 成人免费视频网站在线观看 | 最新的黄色网址 | 蜜臀网 | 亚洲成人毛片 | 中文字幕av一区二区三区免费看 | 亚洲精品久久久一区二区三区 | 亚洲综合精品久久 | 亚洲色图偷拍视频 | 亚洲精品国产片 | 国产在线小视频 | 国产成人精品久久 | 人一级毛片 | 日韩视频精品 | 亚洲国产精品一区二区久久 | 国产精品一区二区三区免费 | 日韩大尺度电影在线观看 | 久草中文在线 | 国产精品日韩在线观看 | 91综合在线观看 | 久久久久亚洲一区二区三区 | 日韩欧美综合 | 亚洲三区在线观看 | 美日韩在线 | 九九免费在线观看 | 国产精品1区 |