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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WebSocket介绍

發(fā)布時(shí)間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebSocket介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

WebSocket協(xié)議是基于TCP的一種新的協(xié)議。WebSocket最初在HTML5規(guī)范中被引用為TCP連接,作為基于TCP的套接字API的占位符。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工(full-duplex)通信。其本質(zhì)是保持TCP連接,在瀏覽器和服務(wù)端通過(guò)Socket進(jìn)行通信。

?本文將使用Python編寫Socket服務(wù)端,一步一步分析請(qǐng)求過(guò)程!!!

1. 啟動(dòng)服務(wù)端

import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('127.0.0.1', 8002)) sock.listen(5) # 等待用戶連接 conn, address = sock.accept() ... ... ...

啟動(dòng)Socket服務(wù)器后,等待用戶【連接】,然后進(jìn)行收發(fā)數(shù)據(jù)。

2. 客戶端連接

<script type="text/javascript">var socket = new WebSocket("ws://127.0.0.1:8002/xxoo");... </script>

當(dāng)客戶端向服務(wù)端發(fā)送連接請(qǐng)求時(shí),不僅連接還會(huì)發(fā)送【握手】信息,并等待服務(wù)端響應(yīng),至此連接才創(chuàng)建成功!

3. 建立連接【握手】

import socketsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('127.0.0.1', 8002)) sock.listen(5) # 獲取客戶端socket對(duì)象 conn, address = sock.accept() # 獲取客戶端的【握手】信息 data = conn.recv(1024) ... ... ... conn.send('響應(yīng)【握手】信息')

請(qǐng)求和響應(yīng)的【握手】信息需要遵循規(guī)則:

  • 從請(qǐng)求【握手】信息中提取?Sec-WebSocket-Key
  • 利用magic_string 和 Sec-WebSocket-Key 進(jìn)行hmac1加密,再進(jìn)行base64加密
  • 將加密結(jié)果響應(yīng)給客戶端

注:magic string為:258EAFA5-E914-47DA-95CA-C5AB0DC85B11

請(qǐng)求【握手】信息為:

GET /chatsocket HTTP/1.1 Host: 127.0.0.1:8002 Connection: Upgrade Pragma: no-cache Cache-Control: no-cache Upgrade: websocket Origin: http://localhost:63342 Sec-WebSocket-Version: 13 Sec-WebSocket-Key: mnwFxiOlctXFN/DeMt1Amg== Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits ... ...

提取Sec-WebSocket-Key值并加密:

import socket import base64 import hashlibdef get_headers(data):"""將請(qǐng)求頭格式化成字典:param data::return:"""header_dict = {}data = str(data, encoding='utf-8')for i in data.split('\r\n'):print(i)header, body = data.split('\r\n\r\n', 1)header_list = header.split('\r\n')for i in range(0, len(header_list)):if i == 0:if len(header_list[i].split(' ')) == 3:header_dict['method'], header_dict['url'], header_dict['protocol'] = header_list[i].split(' ')else:k, v = header_list[i].split(':', 1)header_dict[k] = v.strip()return header_dictsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('127.0.0.1', 8002)) sock.listen(5)conn, address = sock.accept() data = conn.recv(1024) headers = get_headers(data) # 提取請(qǐng)求頭信息 # 對(duì)請(qǐng)求頭中的sec-websocket-key進(jìn)行加密 response_tpl = "HTTP/1.1 101 Switching Protocols\r\n" \"Upgrade:websocket\r\n" \"Connection: Upgrade\r\n" \"Sec-WebSocket-Accept: %s\r\n" \"WebSocket-Location: ws://%s%s\r\n\r\n" magic_string = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' value = headers['Sec-WebSocket-Key'] + magic_string ac = base64.b64encode(hashlib.sha1(value.encode('utf-8')).digest()) response_str = response_tpl % (ac.decode('utf-8'), headers['Host'], headers['url']) # 響應(yīng)【握手】信息 conn.send(bytes(response_str, encoding='utf-8')) ... ... ...

4.客戶端和服務(wù)端收發(fā)數(shù)據(jù)

客戶端和服務(wù)端傳輸數(shù)據(jù)時(shí),需要對(duì)數(shù)據(jù)進(jìn)行【封包】和【解包】。客戶端的JavaScript類庫(kù)已經(jīng)封裝【封包】和【解包】過(guò)程,但Socket服務(wù)端需要手動(dòng)實(shí)現(xiàn)。

第一步:獲取客戶端發(fā)送的數(shù)據(jù)【解包】

info = conn.recv(8096)payload_len = info[1] & 127if payload_len == 126:extend_payload_len = info[2:4]mask = info[4:8]decoded = info[8:]elif payload_len == 127:extend_payload_len = info[2:10]mask = info[10:14]decoded = info[14:]else:extend_payload_len = Nonemask = info[2:6]decoded = info[6:]bytes_list = bytearray()for i in range(len(decoded)):chunk = decoded[i] ^ mask[i % 4]bytes_list.append(chunk)body = str(bytes_list, encoding='utf-8')print(body) 基于Python實(shí)現(xiàn)解包過(guò)程(未實(shí)現(xiàn)長(zhǎng)內(nèi)容)

解包詳細(xì)過(guò)程:?

0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-------+-+-------------+-------------------------------+|F|R|R|R| opcode|M| Payload len | Extended payload length ||I|S|S|S| (4) |A| (7) | (16/64) ||N|V|V|V| |S| | (if payload len==126/127) || |1|2|3| |K| | |+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +| Extended payload length continued, if payload len == 127 |+ - - - - - - - - - - - - - - - +-------------------------------+| |Masking-key, if MASK set to 1 |+-------------------------------+-------------------------------+| Masking-key (continued) | Payload Data |+-------------------------------- - - - - - - - - - - - - - - - +: Payload Data continued ... :+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +| Payload Data continued ... |+---------------------------------------------------------------+

The MASK bit simply tells whether the message is encoded. Messages from the client must be masked, so your server should expect this to be 1. (In fact,?section 5.1 of the spec?says that your server must disconnect from a client if that client sends an unmasked message.) When sending a frame back to the client, do not mask it and do not set the mask bit. We'll explain masking later.?Note: You have to mask messages even when using a secure socket.RSV1-3 can be ignored, they are for extensions.

The opcode field defines how to interpret the payload data:?0x0?for continuation,?0x1?for text (which is always encoded in UTF-8),?0x2?for binary, and other so-called "control codes" that will be discussed later. In this version of WebSockets,?0x3?to?0x7?and?0xB?to?0xF?have no meaning.

The FIN bit tells whether this is the last message in a series. If it's 0, then the server will keep listening for more parts of the message; otherwise, the server should consider the message delivered. More on this later.

Decoding Payload Length

To read the payload data, you must know when to stop reading. That's why the payload length is important to know. Unfortunately, this is somewhat complicated. To read it, follow these steps:

  • Read bits 9-15 (inclusive) and interpret that as an unsigned integer. If it's 125 or less, then that's the length; you're?done. If it's 126, go to step 2. If it's 127, go to step 3.
  • Read the next 16 bits and interpret those as an unsigned integer. You're?done.
  • Read the next 64 bits and interpret those as an unsigned integer (The most significant bit MUST be 0). You're?done.
  • Reading and Unmasking the Data

    If the MASK bit was set (and it should be, for client-to-server messages), read the next 4 octets (32 bits); this is the masking key.?Once the payload length and masking key is decoded, you can go ahead and read that number of bytes from the socket. Let's call the data?ENCODED, and the key?MASK. To get?DECODED, loop through the octets (bytes a.k.a. characters for text data) of?ENCODED?and XOR the octet with the (i modulo 4)th octet of MASK. In pseudo-code (that happens to be valid JavaScript):

    ?

    var DECODED = "";
    for (var i = 0; i < ENCODED.length; i++) {
    ? ? DECODED[i] = ENCODED[i] ^ MASK[i % 4];
    }

    ?

    Now you can figure out what?DECODED?means depending on your application.

    ?第二步:向客戶端發(fā)送數(shù)據(jù)【封包】

    def send_msg(conn, msg_bytes):"""WebSocket服務(wù)端向客戶端發(fā)送消息:param conn: 客戶端連接到服務(wù)器端的socket對(duì)象,即: conn,address = socket.accept():param msg_bytes: 向客戶端發(fā)送的字節(jié):return: """import structtoken = b"\x81"length = len(msg_bytes)if length < 126:token += struct.pack("B", length)elif length <= 0xFFFF:token += struct.pack("!BH", 126, length)else:token += struct.pack("!BQ", 127, length)msg = token + msg_bytesconn.send(msg)return True View Code

    5. 基于Python實(shí)現(xiàn)簡(jiǎn)單示例

    a. 基于Python socket實(shí)現(xiàn)的WebSocket服務(wù)端:

    #!/usr/bin/env python # -*- coding:utf-8 -*- import socket import base64 import hashlibdef get_headers(data):"""將請(qǐng)求頭格式化成字典:param data::return:"""header_dict = {}data = str(data, encoding='utf-8')header, body = data.split('\r\n\r\n', 1)header_list = header.split('\r\n')for i in range(0, len(header_list)):if i == 0:if len(header_list[i].split(' ')) == 3:header_dict['method'], header_dict['url'], header_dict['protocol'] = header_list[i].split(' ')else:k, v = header_list[i].split(':', 1)header_dict[k] = v.strip()return header_dictdef send_msg(conn, msg_bytes):"""WebSocket服務(wù)端向客戶端發(fā)送消息:param conn: 客戶端連接到服務(wù)器端的socket對(duì)象,即: conn,address = socket.accept():param msg_bytes: 向客戶端發(fā)送的字節(jié):return: """import structtoken = b"\x81"length = len(msg_bytes)if length < 126:token += struct.pack("B", length)elif length <= 0xFFFF:token += struct.pack("!BH", 126, length)else:token += struct.pack("!BQ", 127, length)msg = token + msg_bytesconn.send(msg)return Truedef run():sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)sock.bind(('127.0.0.1', 8003))sock.listen(5)conn, address = sock.accept()data = conn.recv(1024)headers = get_headers(data)response_tpl = "HTTP/1.1 101 Switching Protocols\r\n" \"Upgrade:websocket\r\n" \"Connection:Upgrade\r\n" \"Sec-WebSocket-Accept:%s\r\n" \"WebSocket-Location:ws://%s%s\r\n\r\n"value = headers['Sec-WebSocket-Key'] + '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'ac = base64.b64encode(hashlib.sha1(value.encode('utf-8')).digest())response_str = response_tpl % (ac.decode('utf-8'), headers['Host'], headers['url'])conn.send(bytes(response_str, encoding='utf-8'))while True:try:info = conn.recv(8096)except Exception as e:info = Noneif not info:breakpayload_len = info[1] & 127if payload_len == 126:extend_payload_len = info[2:4]mask = info[4:8]decoded = info[8:]elif payload_len == 127:extend_payload_len = info[2:10]mask = info[10:14]decoded = info[14:]else:extend_payload_len = Nonemask = info[2:6]decoded = info[6:]bytes_list = bytearray()for i in range(len(decoded)):chunk = decoded[i] ^ mask[i % 4]bytes_list.append(chunk)body = str(bytes_list, encoding='utf-8')send_msg(conn,body.encode('utf-8'))sock.close()if __name__ == '__main__':run()

    b. 利用JavaScript類庫(kù)實(shí)現(xiàn)客戶端

    <!DOCTYPE html> <html> <head lang="en"><meta charset="UTF-8"><title></title> </head> <body><div><input type="text" id="txt"/><input type="button" id="btn" value="提交" οnclick="sendMsg();"/><input type="button" id="close" value="關(guān)閉連接" οnclick="closeConn();"/></div><div id="content"></div><script type="text/javascript">var socket = new WebSocket("ws://127.0.0.1:8003/chatsocket");socket.onopen = function () {/* 與服務(wù)器端連接成功后,自動(dòng)執(zhí)行 */var newTag = document.createElement('div');newTag.innerHTML = "【連接成功】";document.getElementById('content').appendChild(newTag);};socket.onmessage = function (event) {/* 服務(wù)器端向客戶端發(fā)送數(shù)據(jù)時(shí),自動(dòng)執(zhí)行 */var response = event.data;var newTag = document.createElement('div');newTag.innerHTML = response;document.getElementById('content').appendChild(newTag);};socket.onclose = function (event) {/* 服務(wù)器端主動(dòng)斷開連接時(shí),自動(dòng)執(zhí)行 */var newTag = document.createElement('div');newTag.innerHTML = "【關(guān)閉連接】";document.getElementById('content').appendChild(newTag);};function sendMsg() {var txt = document.getElementById('txt');socket.send(txt.value);txt.value = "";}function closeConn() {socket.close();var newTag = document.createElement('div');newTag.innerHTML = "【關(guān)閉連接】";document.getElementById('content').appendChild(newTag);}</script> </body> </html>

    6. 基于Tornado框架實(shí)現(xiàn)Web聊天室

    Tornado是一個(gè)支持WebSocket的優(yōu)秀框架,其內(nèi)部原理正如1~5步驟描述,當(dāng)然Tornado內(nèi)部封裝功能更加完整。

    以下是基于Tornado實(shí)現(xiàn)的聊天室示例:

    #!/usr/bin/env python # -*- coding:utf-8 -*- import uuid import json import tornado.ioloop import tornado.web import tornado.websocketclass IndexHandler(tornado.web.RequestHandler):def get(self):self.render('index.html')class ChatHandler(tornado.websocket.WebSocketHandler):# 用戶存儲(chǔ)當(dāng)前聊天室用戶waiters = set()# 用于存儲(chǔ)歷時(shí)消息messages = []def open(self):"""客戶端連接成功時(shí),自動(dòng)執(zhí)行:return: """ChatHandler.waiters.add(self)uid = str(uuid.uuid4())self.write_message(uid)for msg in ChatHandler.messages:content = self.render_string('message.html', **msg)self.write_message(content)def on_message(self, message):"""客戶端連發(fā)送消息時(shí),自動(dòng)執(zhí)行:param message: :return: """msg = json.loads(message)ChatHandler.messages.append(message)for client in ChatHandler.waiters:content = client.render_string('message.html', **msg)client.write_message(content)def on_close(self):"""客戶端關(guān)閉連接時(shí),,自動(dòng)執(zhí)行:return: """ChatHandler.waiters.remove(self)def run():settings = {'template_path': 'templates','static_path': 'static',}application = tornado.web.Application([(r"/", IndexHandler),(r"/chat", ChatHandler),], **settings)application.listen(8888)tornado.ioloop.IOLoop.instance().start()if __name__ == "__main__":run() app.py <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Python聊天室</title> </head> <body><lt;div><input type="text" id="txt"/><input type="button" id="btn" value="提交" onclick="sendMsg();"/><input type="button" id="close" value="關(guān)閉連接" onclick="closeConn();"/></div><div id="container" style="border: 1px solid #dddddd;margin: 20px;min-height: 500px;"></div><script src="/static/jquery-2.1.4.min.js"></script><script type="text/javascript">$(function () {wsUpdater.start();});var wsUpdater = {socket: null,uid: null,start: function() {var url = "ws://127.0.0.1:8888/chat";wsUpdater.socket = new WebSocket(url);wsUpdater.socket.onmessage = function(event) {console.log(event);if(wsUpdater.uid){wsUpdater.showMessage(event.data);}else{wsUpdater.uid = event.data;}}},showMessage: function(content) {$('#container').append(content);}};function sendMsg() {var msg = {uid: wsUpdater.uid,message: $("#txt").val()};wsUpdater.socket.send(JSON.stringify(msg));}</script></body> </html> index.html

    ?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/hedeyong/p/8128129.html

    總結(jié)

    以上是生活随笔為你收集整理的WebSocket介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    国产精品一区在线播放 | 天天操天天干天天 | 视频三区| 国产高清不卡在线 | 日韩成人精品一区二区三区 | av电影在线观看 | 免费观看一级成人毛片 | 国产美女视频免费观看的网站 | 国产精品久久久久久一二三四五 | 日韩.com| 亚洲毛片一区二区三区 | 狠狠操天天操 | 中文在线免费看视频 | 99久久9| 91在线欧美| 亚洲精品一区二区三区新线路 | 国产精品av在线免费观看 | 999久久久免费视频 午夜国产在线观看 | 国产理论片在线观看 | 国产一级片不卡 | 久久精品—区二区三区 | 五月激情站 | 91精品1区2区 | 一区二区三区免费在线 | 最近中文字幕大全 | 欧美另类交在线观看 | 国产日韩欧美在线观看视频 | 国产成人在线一区 | 超碰在线免费福利 | 伊人婷婷 | 欧美日韩高清在线观看 | 在线免费观看一区二区三区 | 99九九免费视频 | 久久这里只有精品首页 | 日韩免费视频观看 | 一级α片 | 亚洲精品99久久久久中文字幕 | 亚洲国产精品成人av | 色综合久久久久久久 | 国产中文a | 免费网址你懂的 | 91视频免费看 | 激情综合色图 | 精品国产乱子伦一区二区 | 国产二区视频在线 | 久久久久久久福利 | 久草视频在线免费看 | 免费看的黄色网 | 韩国三级一区 | 色99久久 | 日本精品一区二区三区在线播放视频 | 日本久久久久 | 在线观看av免费 | 日韩精品久久久久 | 激情久久婷婷 | 国产精品久久久久9999 | 亚洲国产成人高清精品 | 激情小说网站亚洲综合网 | 欧美精品在线一区 | 综合色在线观看 | 91视频高清| 久久精品视频5 | 91亚洲成人 | 超碰在线人人97 | 99国产精品一区 | 日韩动漫免费观看高清完整版在线观看 | 一级片视频在线 | 色中色亚洲 | 久草在线视频新 | 久久午夜鲁丝片 | 久久黄色免费 | 久久视频网 | 又色又爽又激情的59视频 | 国产高清在线观看 | 人人爱人人做人人爽 | 国产日韩精品在线观看 | 天天干夜夜爽 | .国产精品成人自产拍在线观看6 | 成人毛片一区二区三区 | 国产永久免费 | 狠狠网亚洲精品 | 18性欧美xxxⅹ性满足 | 久久精品视频网址 | 久草在线最新免费 | 亚洲欧美少妇 | 国产精品精品久久久 | 中文日韩在线 | 国产精品视频99 | 亚洲精品一区中文字幕乱码 | 国产一级久久 | 99精品视频在线播放免费 | 欧美极度另类性三渗透 | 国产又粗又猛又黄又爽视频 | 91香蕉视频在线下载 | 欧洲激情在线 | 久久久久 | 免费色视频网站 | 久久久免费精品国产一区二区 | 精品亚洲成人 | 久久草草影视免费网 | 中文字幕在线免费观看 | 国产精品美女久久久久久久网站 | 国产精品视频最多的网站 | 国产成人精品一区二区三区福利 | 91九色视频在线播放 | 国产直播av| 日韩精品网址 | 免费下载高清毛片 | 在线成人小视频 | 国产精品情侣视频 | 99国产情侣在线播放 | 久久久精品国产一区二区电影四季 | 国产又黄又爽无遮挡 | 国产裸体永久免费视频网站 | 精品免费在线视频 | 欧美久久久一区二区三区 | 麻豆视频国产 | 久久久久久麻豆 | 亚洲蜜桃在线 | 激情欧美一区二区免费视频 | 亚洲人久久 | 日韩在线免费高清视频 | 久久综合毛片 | 亚洲第一成网站 | 三级黄色在线观看 | 999电影免费在线观看 | 天天射天天干天天操 | 少妇bbr搡bbb搡bbb | 久久国产高清 | 国产第一页精品 | 最近乱久中文字幕 | 成人免费看视频 | 2019av在线视频 | 玖玖在线资源 | 一区二区激情 | 久久免费公开视频 | 日韩欧美在线免费观看 | 丁香婷五月 | 五月天堂色 | 欧美成年人在线视频 | 亚洲精品一区二区在线观看 | 久久免费视频5 | 国产丝袜美腿在线 | 波多野结衣网址 | 日韩一级电影在线 | 天天色影院 | 久久久www成人免费毛片 | 亚洲影院一区 | 国产欧美久久久精品影院 | 成人黄大片视频在线观看 | 91亚洲在线观看 | 精品国产乱码一区二区三区在线 | 超碰日韩 | 超碰人人草 | www.五月婷婷.com | 国产不卡高清 | 国产手机在线观看视频 | 日韩高清激情 | 五月激情亚洲 | 国产精品美女网站 | 国产在线久久久 | 国产欧美最新羞羞视频在线观看 | 婷婷丁香激情综合 | 亚洲视频资源在线 | 免费观看一级特黄欧美大片 | 午夜视频一区二区 | 久久国产手机看片 | 久久不射电影院 | av千婊在线免费观看 | 五月婷婷丁香六月 | а天堂中文最新一区二区三区 | 久久精品国产免费看久久精品 | 99精品视频在线免费观看 | avwww在线观看 | 国产一区二区久久久 | 国产精品99久久久久 | 91污污视频在线观看 | 久久a热6 | 91麻豆精品国产午夜天堂 | 超碰97在线资源站 | 国产一区 在线播放 | 黄色av电影在线观看 | 国产手机视频在线 | av超碰在线 | 成人中文字幕+乱码+中文字幕 | 久久国产免费 | 国产精品视频久久久 | 久久精品一区二区 | 久久国内免费视频 | 最近av在线 | 国产精品久久久av | 亚洲视频精品在线 | 在线亚洲观看 | 国产精品久久久久久久久久久久久久 | 婷婷久久综合九色综合 | 国产在线观看午夜 | 国产视频中文字幕在线观看 | 久久久久伦理电影 | 国产高清福利在线 | 日韩精品欧美精品 | 亚洲国产av精品毛片鲁大师 | 亚洲天堂首页 | av理论电影| 中文有码在线视频 | 98超碰人人 | 天天干天天摸 | 91精品色| av+在线播放在线播放 | 五月天天天操 | 国产在线国偷精品产拍免费yy | 久久久久福利视频 | 视频1区2区| 久久久福利 | 精品国产免费看 | 在线视频 影院 | 国产成人综合图片 | 草樱av | 一本到视频在线观看 | 国产综合91 | 亚洲毛片一区二区三区 | 国产精品1区2区在线观看 | 欧美一性一交一乱 | 人人爽人人爽人人片 | 日韩三级.com | 日本婷婷色 | 久久视频在线观看 | 中文字幕av有码 | 亚洲砖区区免费 | 狠狠狠综合 | 成人中文字幕+乱码+中文字幕 | 国产尤物视频在线 | 久久视频网 | 8090yy亚洲精品久久 | 亚洲资源在线观看 | 99精品在线观看 | 天天操天天干天天综合网 | 日韩r级在线 | 精品国产乱码 | 久久只有精品 | 中文字幕在线一区观看 | 激情小说 五月 | 激情五月网站 | 欧美永久视频 | 亚洲人成人在线 | 一区二区视频在线看 | 久草视频在线免费播放 | 天天操综| 亚洲国产理论片 | 久久久久久久国产精品 | 久久系列 | 免费在线观看黄网站 | 99久久99精品 | 国产成人高清av | 亚洲视频高清 | 国产一区二区高清不卡 | 午夜久久视频 | 奇米777777| 欧美精品生活片 | www.成人sex| 天天干夜夜干 | 亚洲午夜精 | 在线观看黄色大片 | 国产精品永久免费 | 久久亚洲免费视频 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 在线影视 一区 二区 三区 | 91精品国产99久久久久久红楼 | 国内精品久久久久影院优 | 国产日女人 | 1024久久| 国产一区高清在线观看 | 在线亚洲人成电影网站色www | 在线免费国产 | 九九综合九九 | 午夜三级毛片 | 91成人精品一区在线播放69 | 国内精品久久久久久中文字幕 | 丝袜一区在线 | 射射射综合网 | 欧美a在线免费观看 | 99热精品久久 | www.xxxx变态.com| 99精品国产兔费观看久久99 | 99视频免费播放 | 午夜精品久久久久久久久久久久 | 91免费在线视频 | 国内精品视频久久 | 日日操夜 | 91av免费看 | 免费视频区| 很黄很污的视频网站 | 日韩在线免费小视频 | 久久在线视频精品 | 欧美一区二区免费在线观看 | 在线观看视频国产一区 | 操操综合网 | 中文字幕中文字幕在线中文字幕三区 | 欧美久久久久久久久久 | 久99视频| 中文字幕在线观看第一页 | 日韩中字在线 | 国产亚洲精品综合一区91 | 一区二区三区在线电影 | 国产小视频免费在线网址 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 国产精品久久久久久影院 | 亚洲一区二区三区在线看 | 成人午夜免费剧场 | 99在线视频网站 | 亚洲欧洲国产日韩精品 | 在线视频 区 | 免费在线色电影 | 在线观看片| 不卡的av电影 | 一区二区国产精品 | 尤物一区二区三区 | 99久久精品国产一区二区成人 | 国产精品成人免费精品自在线观看 | 成人av在线观 | 国产一区福利在线 | 久色婷婷 | 日本中文字幕在线 | 色一色在线| 天天看天天干天天操 | 亚洲热视频 | 日韩在线视频网 | 在线观看资源 | 久久久久久网 | 亚洲精品美女久久 | 成人激情开心网 | 97电影在线看视频 | 一区二区三区中文字幕在线观看 | 狠狠地操 | 国产日韩精品一区二区三区 | 亚洲自拍自偷 | 日韩伦理一区二区三区av在线 | 日韩在线观看你懂得 | 91精选| 91传媒91久久久 | 日韩精品一区二区免费视频 | 国产v在线观看 | 久久精品99国产精品酒店日本 | 国产丝袜在线 | 成人手机在线视频 | 欧美日韩性| 精品久久久久久久久久久院品网 | 91污视频在线| av高清网站在线观看 | 青青射 | 日韩欧美视频一区二区三区 | 色狠狠一区二区 | 日本深夜福利视频 | 国产精品久久久久久久久岛 | 在线视频国产区 | 日韩中文字幕a | 欧美大片在线观看一区 | 国产一区视频在线播放 | 成人精品电影 | 久久久香蕉视频 | 日日夜夜精品网站 | 九九热免费视频在线观看 | 国产精品18久久久久久久 | 日韩欧美视频一区二区三区 | 这里只有精品视频在线观看 | 日韩r级电影在线观看 | 亚洲精品一区二区18漫画 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 色天天综合网 | 91亚洲精| 久久伊人热| 久久国产成人午夜av影院宅 | 国产精品丝袜 | 中文字幕在线有码 | 欧美一区二区在线看 | 国内精品久久久久久久久久久 | 亚洲欧美日韩精品一区二区 | 亚洲特级毛片 | 狠狠色丁香婷婷综合基地 | 久久国产热视频 | 免费看的av片 | 91日韩精品视频 | 手机av观看| 亚洲国产黄色 | 久久久久成人精品免费播放动漫 | av大全在线 | 欧美最猛性xxxxx亚洲精品 | 免费观看的黄色片 | 欧美日韩中文字幕在线视频 | 99精品在线视频播放 | 精品国产一二区 | 91尤物国产尤物福利在线播放 | 久久综合九色综合欧美狠狠 | 久久成人欧美 | 狠狠色丁香久久婷婷综合五月 | 日韩精品一区二区免费视频 | 久久成人精品电影 | 美女网站色在线观看 | 成人av直播| 在线免费av播放 | 欧洲亚洲国产视频 | 久久九九国产视频 | 国产亚洲一级高清 | 久久久久成人精品亚洲国产 | 国产精品福利在线观看 | 狠色狠色综合久久 | 一二三区av | 在线观看国产v片 | 久久久黄色免费网站 | 亚洲精品婷婷 | 午夜精品一区二区三区视频免费看 | 狠狠色噜噜狠狠狠狠 | 超碰人人做 | 成人av直播| 日本最大色倩网站www | 又黄又爽又湿又无遮挡的在线视频 | 日韩欧美在线高清 | 国产精品久久婷婷六月丁香 | 国产美女视频免费观看的网站 | 又色又爽的网站 | 91九色精品国产 | 中文字幕av有码 | 中文国产字幕 | 日韩欧美精品在线 | 99视频99| 久草com | 国产成人久久 | 波多野结衣在线视频免费观看 | 久久成人午夜 | 午夜视频一区二区三区 | 国产不卡在线观看 | 亚洲欧美国产精品va在线观看 | 亚洲狠狠干 | 丁香久久久| 黄色成人影院 | 日韩免费电影一区二区 | 精品久久久久国产免费第一页 | 午夜aaaa| 国产成人综 | 日韩欧美高清不卡 | 国产福利一区二区三区在线观看 | 欧女人精69xxxxxx | www.在线看片.com | 国产成人精品亚洲精品 | 亚洲三级毛片 | 在线观看自拍 | 亚洲国产精品日韩 | 中文字幕日韩国产 | 激情五月色播五月 | 欧美激情视频一区二区三区 | 91mv.cool在线观看 | 久久久久久国产精品美女 | 日日夜夜添 | 久久国色夜色精品国产 | 国产xx在线 | 超碰人人在线观看 | 在线天堂中文www视软件 | 婷婷色六月天 | 免费三级av | 国产成人一区二区三区久久精品 | 韩国精品一区二区三区六区色诱 | 久久精品亚洲精品国产欧美 | 日韩午夜小视频 | av免费试看 | av在线电影免费观看 | 奇米网777 | 国产成人一区二区三区影院在线 | 97av在线视频免费播放 | 久久天天综合网 | 久久免费精彩视频 | 国产黄视频在线观看 | 久久少妇 | 九九爱免费视频在线观看 | 国产精品一区二区三区四区在线观看 | 国产视频一级 | 久久精品视频在线观看免费 | 99福利片 | 午夜av在线 | 日韩在线免费视频 | 黄色免费观看 | 丁香婷婷在线 | 国产裸体视频bbbbb | 欧美午夜a | 在线观看免费观看在线91 | 日韩三级中文字幕 | av中文天堂| 中文字幕资源网 国产 | 少妇视频在线播放 | 久久视频免费 | 黄色毛片在线看 | 日本黄色免费观看 | 在线播放视频一区 | 国产视频99 | 亚洲午夜久久久久久久久 | 日韩特黄av | 97香蕉久久国产在线观看 | 日韩激情视频在线观看 | 在线91观看| 亚洲小视频在线 | 911精品视频 | 日韩在线观看三区 | 免费看v片网站 | 久草精品视频 | 国产成人久久精品一区二区三区 | 日韩大陆欧美高清视频区 | 中文字幕在线观看国产 | 日韩欧美一区二区三区在线观看 | 免费亚洲精品视频 | 网站在线观看你们懂的 | 亚洲天天做| 在线国产中文字幕 | 亚洲国产高清在线观看视频 | 91人人爽人人爽人人精88v | 欧美一区二区精品在线 | 看国产黄色大片 | 日日爱av| 中文字幕 国产精品 | avsex| 中文字幕精品视频 | 中文字幕精品视频 | 亚洲国产午夜精品 | 欧美成人h版 | 国产一级黄大片 | 成人在线一区二区三区 | 中文字幕一区二区三区在线播放 | 亚洲天堂首页 | 国产美女精品 | 91超碰免费在线 | 日本精品视频免费观看 | 9幺看片 | 日韩精品视频久久 | 91秒拍国产福利一区 | 五月婷婷中文字幕 | 日本性生活免费看 | 精品亚洲免费 | 粉嫩av一区二区三区四区五区 | 91激情视频在线观看 | 亚洲婷婷丁香 | 黄色在线观看免费网站 | 精品国产资源 | 成人一区二区在线观看 | 最新中文在线视频 | 免费网站在线观看成人 | 亚洲视频一区二区三区在线观看 | 免费在线观看av网站 | 久久综合网色—综合色88 | 久久精品视频观看 | 狠狠黄| 久久久久黄 | 久草精品视频在线观看 | 日韩中文在线观看 | 国产无遮挡猛进猛出免费软件 | 在线观看一区二区精品 | a色网站| 在线观看视频一区二区三区 | 黄网站www| 日韩久久影院 | 欧美激情va永久在线播放 | 天天射综合网站 | 激情欧美丁香 | 91精品蜜桃| 色婷婷中文 | 日韩字幕| 伊人久久电影网 | 超碰在线最新网址 | 看av在线| 色综合小说 | 日本在线观看一区二区三区 | 婷婷丁香导航 | 黄色成年 | 久久黄色a级片 | 亚洲午夜精品久久久久久久久 | 亚洲成人资源在线观看 | 婷婷色中文字幕 | 91福利视频久久久久 | 麻豆久久一区二区 | 香蕉视频网站在线观看 | 黄色中文字幕 | 国产精品大片 | 超碰在线人人 | 国产在线免费观看 | 久久久国产网站 | 国产一区二区三区免费观看视频 | 激情婷婷 | 国产精品a久久久久 | 欧美大片在线观看一区 | 激情综合中文娱乐网 | 四虎永久免费网站 | 精品成人免费 | 国产精品欧美一区二区三区不卡 | 久草在线手机观看 | 成人影视片 | 丁香婷婷综合色啪 | 日日干干夜夜 | 午夜在线观看一区 | 丝袜网站在线观看 | 久久国产精品久久w女人spa | 精品1区2区3区 | 最新日韩视频在线观看 | 欧美一级专区免费大片 | 国产日本亚洲高清 | 国产成人精品av在线观 | 全黄网站 | 精品一区二区久久久久久久网站 | 热久久影视 | 色在线视频 | 亚洲精品www| 久热av在线| 九九在线免费视频 | 国产亚洲视频在线观看 | 在线天堂视频 | 久草视频免费在线播放 | 精品久久网 | 久草精品免费 | 欧美日本啪啪无遮挡网站 | 国产黑丝一区二区三区 | 日韩精品免费在线观看视频 | 欧美日韩亚洲在线观看 | 久久国产一区二区三区 | 国产99免费视频 | 日本高清免费中文字幕 | 91精品在线播放 | 黄色网在线播放 | 中文字幕在线观看一区二区三区 | 色婷婷www | 国产最新精品视频 | 国产午夜精品av一区二区 | 色综合久久五月天 | 久久精品免费看 | 国产美女精品视频 | 成人97视频一区二区 | 成人黄色免费在线观看 | 国产成人精品三级 | 五月激情在线 | 中日韩三级视频 | 久久久91精品国产 | 97热在线观看 | 亚洲精品国产片 | 久久成人精品电影 | 香蕉视频啪啪 | 日本精品免费看 | 亚洲精品成人在线 | 四虎影院在线观看av | 国产成人精品久久久久蜜臀 | 97日日碰人人模人人澡分享吧 | 国产精品欧美日韩在线观看 | 69国产成人综合久久精品欧美 | 免费精品视频在线 | 黄污在线观看 | 国产免费久久 | www.99热精品 | 久久福利综合 | 日韩高清久久 | 国产一区成人在线 | 久香蕉 | 日b视频国产 | 久久久久伊人 | 精品女同一区二区三区在线观看 | 免费h视频 | 国产精品99久久免费黑人 | 97在线观看视频 | 久久有精品 | 欧美日韩视频在线观看一区二区 | 亚洲综合欧美日韩狠狠色 | 亚洲国产伊人 | 午夜视频免费在线观看 | 黄a网 | 伊人久久电影网 | 综合伊人av | 又黄又刺激视频 | 久久久久99精品国产片 | 色婷婷成人网 | 亚洲精品国产免费 | 美女久久视频 | 中文字幕有码在线观看 | 国内外成人在线 | 黄色免费高清视频 | 亚洲精品www.| 色永久免费视频 | 99爱这里只有精品 | 久草网在线视频 | 香蕉视频网址 | 91精品免费在线观看 | 国产午夜三级 | 国产99视频在线观看 | 天天激情综合 | 手机av观看 | av看片网址 | 最近高清中文字幕在线国语5 | 中文字幕观看在线 | 97精产国品一二三产区在线 | 日本最新一区二区三区 | 在线中文字幕一区二区 | 爱av在线网| 国产福利一区二区在线 | 亚洲国产精品视频在线观看 | 国产麻豆精品传媒av国产下载 | 免费大片av | 人人看人人爱 | 成人试看120秒 | 精品久久久久久久久中文字幕 | 日韩视频中文 | а天堂中文最新一区二区三区 | 日本精品一区二区三区在线播放视频 | 亚洲经典视频在线观看 | 色噜噜在线观看视频 | 高清av免费一区中文字幕 | 亚洲网站在线看 | 日日爱夜夜爱 | 久黄色| 国产精品久久久久久久久久久久久久 | 成人午夜影院在线观看 | 中文字幕资源在线 | 久草av在线播放 | 中文字幕日本特黄aa毛片 | 国产一级视频免费看 | 麻豆视频在线播放 | 中文字幕网站 | 免费精品视频在线 | 久久五月婷婷丁香 | 日韩在线免费小视频 | 在线观看91av | 亚洲婷婷网 | 久久激情日本aⅴ | 欧美日韩亚洲国产一区 | 日韩一区在线免费观看 | 日韩免费电影网站 | 亚洲综合网站在线观看 | 精品视频www | 欧美日韩1区| 国产精品影音先锋 | 久久综合久久综合这里只有精品 | 久久久久久久久久久免费视频 | 国产高清免费 | 婷婷免费视频 | 久久精品这里都是精品 | 久久av影院| 日韩免费电影一区二区 | 91av在线免费看 | 久99久精品视频免费观看 | 成人av一区二区三区 | 91免费观看 | 一区二区三区免费网站 | 色88久久| 人人爽人人搞 | 九九免费在线看完整版 | av一区二区在线观看中文字幕 | 免费看黄色91 | 欧美精品久久久久久久久久 | 免费亚洲婷婷 | 欧美色888 | 天天插狠狠干 | 最新av网站在线观看 | 国产不卡av在线播放 | 国内精品久久影院 | 伊香蕉大综综综合久久啪 | 久久资源在线 | 国产99亚洲| 最新免费av在线 | 9ⅰ精品久久久久久久久中文字幕 | 一区二区三区四区精品视频 | 96亚洲精品久久久蜜桃 | 欧美一二三四在线 | 久久精品一区二区三区四区 | 日韩在线高清 | www.大网伊人 | 大型av综合网站 | 久久久这里有精品 | av黄色免费看 | 久久99久久久久久 | 国产麻豆精品一区 | 日韩av一区二区在线 | 97精品在线视频 | 毛片网站在线观看 | 欧美一区二区三区在线看 | 日韩av影片在线观看 | av字幕在线| 久久人人添人人爽添人人88v | 日韩午夜电影院 | 婷婷久久精品 | 人人爽久久涩噜噜噜网站 | 亚洲热久久 | 字幕网资源站中文字幕 | 91九色网站 | 国产很黄很色的视频 | 成人免费观看网址 | 久久视影 | 探花视频免费观看高清视频 | 岛国av在线| 久久国语露脸国产精品电影 | 国产高清视频在线播放一区 | 国产精品黄色 | 91视频91色 | 成人黄色片在线播放 | 久久久久免费看 | 久久久影视 | 欧美日韩亚洲精品在线 | 中文字幕视频播放 | 亚洲精品在线免费 | 国产视频一区二区在线播放 | 婷婷国产精品 | 久久精久久精 | 精品久久一区二区三区 | 日本乱视频 | 狠狠躁日日躁狂躁夜夜躁 | 国产精品热视频 | 国产精品一区二区三区视频免费 | 波多野结衣一区三区 | 欧美色图亚洲图片 | 激情av综合 | 中文字幕一区二区三区视频 | 亚洲九九爱 | 亚洲人av免费网站 | 99亚洲视频| 国产精品一区二区免费看 | 中文字幕免费国产精品 | 91精品毛片 | 国产精品久久久久久久久久久久午 | 中文字幕在线国产精品 | 欧美国产日韩在线视频 | 国产精品成人国产乱一区 | 天天插天天狠 | 欧美性生活久久 | 亚洲六月丁香色婷婷综合久久 | 人人爽人人看 | 欧美日本不卡高清 | 黄色毛片在线观看 | 久草久草视频 | 丝袜+亚洲+另类+欧美+变态 | 日韩一区精品 | 久草久热 | 亚洲一区二区精品3399 | 国产精品一区二区三区久久久 | 97人人模人人爽人人喊网 | 精品久久久久国产免费第一页 | 国产精品九色 | 97狠狠干 | 国内外成人在线 | 黄色一级网 | 日韩中文字幕国产 | 超级碰碰视频 | 久久九九久久精品 | 91精品综合在线观看 | 久久艹99| 国产视频 亚洲精品 | 在线看免费| 国产在线1区 | 在线视频a| 黄色的网站在线 | 日韩免费一级a毛片在线播放一级 | 精品中文字幕在线 | 国产精品久久久久久久久久99 | www.夜夜操.com| 最近免费中文字幕大全高清10 | 黄色日批网站 | 日韩在线中文字幕视频 | 天天插日日插 | 国产在线观看高清视频 | 麻豆免费视频 | 日韩欧美综合视频 | 四虎在线永久免费观看 | 免费情趣视频 | 蜜桃视频在线视频 | 日韩欧美在线不卡 | 免费福利视频导航 | 狠狠色狠狠色合久久伊人 | 狠狠操.com| 天天干com | 日韩av一区二区在线播放 | 精品久久亚洲 | 国产精品va在线观看入 | 99九九免费视频 | 国产免费观看久久 | 综合色在线观看 | .国产精品成人自产拍在线观看6 | 91九色视频在线观看 | 国产一区在线免费观看视频 | 免费黄色av电影 | 午夜精品视频在线 | 狠狠的日| av中文字幕av | 免费a视频在线 | 国产视频日韩视频欧美视频 | 亚洲精品成人在线 | 日本精品视频在线观看 | 久久免费视频5 | 久久神马影院 | 黄色毛片视频免费观看中文 | 九九九电影免费看 | 国产精品欧美 | 奇米导航| 免费久久网站 | 99热精品国产 | 91免费观看国产 | 国模视频一区二区三区 | 欧美色久 | 91入口在线观看 | 中文字幕亚洲综合久久五月天色无吗'' | 欧美日韩国产一区二区三区 | 黄色免费观看网址 | 亚洲成a人片在线www | 亚洲国产剧情av | 激情综合国产 | 国产福利精品一区二区 | 天天碰天天操视频 | 制服丝袜在线 | 激情五月在线观看 | 国产二区视频在线观看 | 黄色.com| 成人综合免费 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产99久久九九精品免费 | 欧美日韩p片 | 欧美人人| 啪啪精品| 射射射av | 亚洲欧洲一区二区在线观看 | 91视频在线播放视频 | 欧美午夜性生活 | 四虎成人av | 天天爱天天操天天爽 | 日韩欧美国产激情在线播放 | 日韩美一区二区三区 | 天堂视频中文在线 | 欧美精品久久久久久久 | av五月婷婷 | 久久免费a | 国产精品久久久久久高潮 | 久草视频在线播放 | 国产婷婷色 | 亚洲视频每日更新 | av片免费播放 | 免费看污黄网站 | 天天射天天搞 | 久久久久二区 | 一级黄色在线视频 | www..com毛片 | 网站免费黄 | 一本一本久久aa综合精品 | aⅴ精品av导航 | 日韩欧美视频二区 | www.狠狠干| 日韩成人邪恶影片 | 亚洲四虎 | 一区二区中文字幕在线播放 | 草免费视频| 国产黄色大全 | 男女免费av| 黄色大片免费播放 | 免费精品久久久 | 国产偷v国产偷∨精品视频 在线草 | 香蕉久久国产 | 国产区在线视频 | 麻豆视频免费在线观看 | 欧美日韩一区二区三区在线免费观看 | 久久久久久久久久久影院 | 久久成人亚洲欧美电影 | 久久精品亚洲综合专区 | 免费av视屏 | 精品不卡av| 精品国产黄色片 | 久久久久国 | 国产理论免费 | 国产91aaa| 色婷婷av国产精品 | 日日夜夜天天久久 | 四虎国产精品免费 | 亚洲福利精品 | 亚洲综合色丁香婷婷六月图片 | 成人国产网站 | 免费看精品久久片 | 99精品黄色 | 开心丁香婷婷深爱五月 | 欧美一区二区日韩一区二区 | 色噜噜狠狠狠狠色综合久不 | 久久这里只有精品久久 | 欧美国产高清 | 亚洲无吗天堂 | 久久久久黄 | 国产精品乱码久久久久久1区2区 | 国产96在线 | 丁香 婷婷 激情 | 人人射人人澡 | 免费看三片 | 色爱区综合激月婷婷 | 一本一本久久a久久精品综合小说 | 在线观看视频国产一区 | 手机看片久久 | 亚洲网站在线 | 免费看片成人 | 国产麻豆视频免费观看 | 久草免费在线观看视频 | 精品国产一区二区三区噜噜噜 | 日韩av电影免费观看 | 亚洲精品影院在线观看 | 天天操天天操天天 | 日本在线h | 婷婷四房综合激情五月 | 91污污视频在线观看 |