• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Python的聊天軟件的設(shè)計與實現(xiàn)

    2017-05-18 03:40:02張萍萍紀志堅
    關(guān)鍵詞:服務(wù)器端聊天客戶端

    ◆張萍萍 紀志堅

    (青島大學自動化與電氣工程學院 山東 266071)

    基于Python的聊天軟件的設(shè)計與實現(xiàn)

    ◆張萍萍 紀志堅

    (青島大學自動化與電氣工程學院 山東 266071)

    本系統(tǒng)是一個局域網(wǎng)聊天軟件,是以Python語言為基礎(chǔ),結(jié)合數(shù)據(jù)庫技術(shù),多線程編程技術(shù),運用TCP模式的Socket編程技巧實現(xiàn)一個服務(wù)器與多個客戶端互聯(lián),服務(wù)器存儲并轉(zhuǎn)發(fā)客戶端發(fā)來的數(shù)據(jù),從而實現(xiàn)一對一的客戶端之間的通信。服務(wù)器將客戶端發(fā)來的消息進行廣播,客戶端接收服務(wù)器發(fā)送的消息,通過內(nèi)置標志位判斷是否進行接收,從而實現(xiàn)聊天室群聊功能。本論文主要闡述了軟件開發(fā)過程中運用軟件開發(fā)瀑布模型所走過的需求分析,概要設(shè)計,詳細設(shè)計,編碼以及單元測試,集成測試等軟件開發(fā)與測試流程。通過嚴謹?shù)木幋a規(guī)范,全面的版本控制以及細致的缺陷跟蹤力求設(shè)計出的軟件功能完善,界面美觀,性能優(yōu)越。

    Python語言;MySQL數(shù)據(jù)庫;多線程編程;TCP協(xié)議;Socket編程

    0 引言

    當今主流的聊天工具有很多,例如 QQ、MSN、雅虎通,這些聊天軟件已能滿足用戶聊天的需求。但由于這些軟件的不開源性,對于很多公司企業(yè)來說,為了保證其信息的安全性,都不得不開發(fā)設(shè)計出一款自己的聊天軟件。因此,從當前情況來說,一款安全、實時的聊天軟件不僅能夠保證員工之間的交流,同時也能保證企業(yè)內(nèi)部之間信息交流的安全,這對于一個企業(yè)來說是極其重要的。

    基于這種情況,本文設(shè)計開發(fā)出了該聊天軟件,其最大的特點就是能夠動態(tài)、實時的完成信息的傳遞以及能更有效的處理用戶的請求。此外,也因其功能單一而更易于維護和更新。

    1 系統(tǒng)分析

    由于本系統(tǒng)是由更先進的面向?qū)ο缶幊陶Z言Python編寫,程序中大量引用的類庫都具有平臺無關(guān)性,這使得最終系統(tǒng)具有良好的跨平臺特性[1]??梢詫⒎?wù)器端部署在Windows系統(tǒng)下而將客戶端安裝在Linux系統(tǒng)中,反之亦然。

    1.1 可行性分析

    (1)經(jīng)濟可行性:該聊天工具是一個小型的系統(tǒng),因此就開發(fā)成本來說,只要有一臺電腦,就可以開發(fā)出來,因此實際的成本我們也可以忽略不計。

    (2)技術(shù)可行性:該聊天系統(tǒng)采用Python 作為編程語言,利用MySql 作為后臺數(shù)據(jù)庫。首先,對于網(wǎng)絡(luò)編程Python提供了豐富的類庫,使得我們能夠很好的進行網(wǎng)絡(luò)通信。其次,MySQL數(shù)據(jù)庫本身具有體積小、速度快的特點。而該聊天系統(tǒng)的存儲數(shù)據(jù)量不會很大,因此將MySQL 數(shù)據(jù)庫作為后臺數(shù)據(jù)庫是一個不錯的選擇[2]。綜上,該系統(tǒng)在技術(shù)上來說也是可行的。

    (3)運行可行性:該系統(tǒng)是個比較小的系統(tǒng),因此對于軟件和硬件的要求都不是很高,現(xiàn)在的電腦基本上都能滿足其要求。運行所需軟件要求:

    操作系統(tǒng):Windows Win7/Linux 及以上

    Python:Python 2.7及以上

    運行所需硬件要求:

    CPU :不作要求

    內(nèi)存:256M 及以上

    1.2 需求分析

    (1)服務(wù)器端功能需求:能夠處理用戶發(fā)送的各種請求(聊天信息、傳送文件、添加好友等)并準確的轉(zhuǎn)發(fā)到指定用戶;能夠向數(shù)據(jù)庫注冊用戶信息;能夠向數(shù)據(jù)庫寫入離線消息;

    (2)客戶端功能需求:用戶可以登錄;用戶能夠注冊聊天賬號;用戶能夠添加或者刪除好友;用戶能夠發(fā)送文本聊天信息;用戶能夠進行文件傳輸;用戶能夠進行聊天室群聊;

    (3)系統(tǒng)用例圖:通過對系統(tǒng)的需求分析,可以識別出系統(tǒng)有兩個參與者,一個是用戶,另一個是系統(tǒng)管理員(在實際的代碼實現(xiàn)中,配置好服務(wù)器端的 IP地址及端口號后服務(wù)器自動響應(yīng)客戶端請求,自動建立連接,關(guān)閉連接無需人為干預)。基于對系統(tǒng)的分析分別繪制出如圖1,圖2所示的用戶請求和系統(tǒng)處理用戶請求用例圖[3]。

    圖1 用戶請求服務(wù)用例圖

    圖2 系統(tǒng)處理用戶請求用例

    系統(tǒng)處理用戶請求用例圖說明:

    (1)Regeist:處理用戶注冊請求。

    (2)Login:處理用戶登錄請求。

    (3)addFriend:處理用戶添加好友請求。

    (4)removeFriend:處理用戶刪除好友請求。

    (5)textChat:處理用戶文本聊天請求。

    (6)fileTrans:處理用戶文件傳輸請求。

    (7)roomChat:處理用戶聊天室聊天請求。

    (8)check user:用戶注冊時,驗證用戶名是否已經(jīng)存在。

    (9)Confirm:用戶登錄時,驗證用戶名密碼是否匹配。

    (10)isOnLine:標識用戶的在線狀態(tài)。

    2 系統(tǒng)總體設(shè)計方案

    2.1 概要設(shè)計

    2.1.1 整體框架設(shè)計

    本聊天系統(tǒng)主要采用了C/S 結(jié)構(gòu),服務(wù)端和客戶端之間通過Socket 進行連接通信。服務(wù)端主要任務(wù)是:連接數(shù)據(jù)庫和處理客戶端的各種請求;客戶端主要是為用戶提供各種服務(wù),然后將服務(wù)請求發(fā)送給服務(wù)端[4]。

    2.1.2 模塊設(shè)計

    根據(jù)前期的系統(tǒng)需求分析,設(shè)計出局域網(wǎng)聊天系統(tǒng)的各個功能模塊[5],如下圖所示。

    圖3 客戶端與服務(wù)器端連接框架圖

    圖4 客戶端之間連接框架

    圖5 各功能模塊圖

    2.1.3 數(shù)據(jù)庫設(shè)計

    通過前期對系統(tǒng)進行需求分析以及對各個功能模塊的設(shè)計,確定數(shù)據(jù)庫存儲用兩張表實現(xiàn),分別是用戶信息表(userInfo)、歷史信息表(history)表結(jié)構(gòu)設(shè)計[6]如圖6、圖7所示。

    圖6 用戶信息表

    圖7 聊天記錄表

    2.2 詳細設(shè)計

    2.2.1 客戶端的設(shè)計

    客戶端主要是實現(xiàn)用戶所需功能,當用戶啟動一個客戶端時,用戶可以通過圖形畫界面上的一些功能按鈕開啟某項對應(yīng)的功能。當用戶點擊某個按鈕時,會產(chǎn)生一個相應(yīng)的事件,客戶端監(jiān)聽到該事件后,啟動相應(yīng)的程序去處理該事件。并將該事件的請求發(fā)送到服務(wù)器,然后客戶端等待服務(wù)器的響應(yīng)[7]。這兩項功能分別由init.py和Server.py兩個模塊實現(xiàn),init模塊包含建立客戶端連接套接字,接收用戶發(fā)送的請求,將請求發(fā)送給服務(wù)器端。Server模塊是一個獨立的模塊要先于客戶端程序運行,實現(xiàn)的功能為建立服務(wù)器端連接套接字,綁定 IP和端口地址,監(jiān)聽客戶端請求,并做出響應(yīng)[8]??蛻舳说牧鞒虉D如圖8所示。

    圖8 客戶端程序流程圖

    2.2.2 登錄設(shè)計

    本局域網(wǎng)聊天軟件名稱為 PyChat本文所有的截圖是本軟件的1.0版本,py為Python的簡寫,同時Python腳本文件后綴名為.py,Chat意為“聊天,閑談”,在開發(fā)本軟件時用到的集成開發(fā)環(huán)境為PyCharm,PyChat的名字也與之相關(guān)聯(lián)。

    用戶登錄界面用于接收用戶輸入的用戶名和密碼,登錄界面對用戶輸入的用戶名密碼進行驗證(同數(shù)據(jù)庫中用戶信息表進行比對),驗證成功則彈出聯(lián)系人列表界面正常登錄,驗證失敗則提示用戶注冊。新用戶進行注冊時,注冊界面復用登錄界面,由“注冊”按鈕調(diào)用數(shù)據(jù)庫模塊的相關(guān)代碼,用戶輸入的用戶名,密碼信息插入數(shù)據(jù)庫用戶信息表中,插入成功后彈出提示窗口提示用戶牢記用戶名,唯一ID,密碼。登錄界面如圖9所示,注冊成功提示界面如圖10所示。

    圖9 登錄窗口

    圖10 注冊成功提示界面

    本軟件代碼部分共分為三個.py文件,分別為 init.py,Server.py,,oprate_db.py,登錄界面由init.py文件中的Window類實現(xiàn),此類初始化聊天窗口,創(chuàng)建兩個Label控件分別提示帳號、密碼,兩個Text控件用于接收用戶輸入的用戶名密碼,兩個Button控件用來產(chǎn)生鼠標點擊事件,觸發(fā)數(shù)據(jù)庫操作函數(shù)。當用戶需要注冊新用戶時只需將自己想要的用戶名,密碼輸入到輸入框中點擊注冊按鈕即可[9]。

    注冊按鈕調(diào)用 Mysql.register()方法將用戶信息入庫。點擊登錄按鈕調(diào)用Client.Contact_window()類,初始化聯(lián)系人列表界面。

    2.2.3 聯(lián)系人列表設(shè)計

    聯(lián)系人列表用于展示自己的聯(lián)系人,聯(lián)系人列表包括添加好友按鈕,聊天室按鈕,好友。界面效果如圖11所示。

    圖11 聯(lián)系人列表

    圖12 添加好友

    聯(lián)系人列表主要分為三部分,添加好友、聊天室、聯(lián)系人,用戶點擊添加好友時調(diào)用 init().Contact_window()彈出好友添加界面如圖12所示,好友添加成功后,以ID的形式顯示在聯(lián)系人中,點擊聯(lián)系人按鈕調(diào)用init.Chat()彈出聊天界面。當用戶點擊聊天室按鈕時,彈出聊天界面,登錄系統(tǒng)的所有用戶可以在此窗口中進行聊天室群聊。

    2.2.4 聊天窗口設(shè)計

    聊天窗口用于接收用戶輸入的聊天信息,同時將接收到的聊天信息顯示到消息屏幕中,聊天窗口如圖13 所示。

    圖13 聊天窗口

    用戶將需要發(fā)送的信息輸入到窗口下方的文本輸入框中,Client.send()方法將用戶輸入數(shù)據(jù)進行提取,將提取后的信息封裝到Client建立的Socket中,用于同服務(wù)器進行通信。接收消息時,接收到的消息將顯示到輸入框上方的接收信息框中。

    3 編碼

    本章展示底層通信原理代碼,本聊天軟件分為通信部分(也是核心部分)和界面部分,最終的軟件實現(xiàn)是通信部分與界面部分的集成。本章展示底層通信原理代碼,本聊天軟件分為通信部分(也是核心部分)和界面部分,最終的軟件實現(xiàn)是通信部分與界面部分的集成。

    3.1 服務(wù)器部分

    #!/usr/bin/env python

    # coding: utf-8

    import socket

    import threading

    """定義用到的變量,建立服務(wù)器端套接字"""

    con = threading.Condition()

    HOST = '127.0.0.1'

    PORT = 8888 # Arbitrary non-privileged port

    data = ''

    ADDR = (HOST,PORT)

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    print 'Server init success!'

    s.bind(ADDR)

    s.listen(10)

    print 'Waiting for client connect'

    #Function for handling connections. This will be used to create threads

    # 接受數(shù)據(jù)存到tmp中 tmp傳給NotifyAll方法中變成data

    """此方法用于接收客戶端發(fā)送的消息,有用戶離線時輸出提示消息"""

    def ClientThreadIn(conn, nick):

    global data

    global id

    #infinite loop so that function do not terminate and thread do not end.

    while True:

    #Receiving from client

    try:

    temp = conn.recv(1024)

    if not temp:

    conn.close()

    return

    NotifyAll(temp)

    print data

    except:

    NotifyAll(nick + " leaves the room!")

    print data

    return

    #came out of loop

    """此方法用于喚醒其他線程,是實現(xiàn)多線程的一部分"""

    def NotifyAll(sss):

    global data

    if con.acquire():

    data = sss

    con.notifyAll()

    con.release()

    """此方法將消息從服務(wù)器端發(fā)送給客戶端"""

    def ClientThreadOut(conn, nick):

    global data

    while True:

    if con.acquire():

    con.wait()

    if data:

    try:

    conn.send(data)

    con.release()

    except:

    con.release()

    return

    """主循環(huán)保證服務(wù)器端開啟后一直處于運行狀態(tài)

    并不間斷接收客戶端發(fā)來的消息,根據(jù)實際需要將消息轉(zhuǎn)發(fā)給特定用戶

    如果用戶進行的是聊天室群聊,則將消息廣播給所有用戶,調(diào)用多線程

    方法接收消息與發(fā)送消息同步進行"""

    while True:

    #wait to accept a connection - blocking call

    conn, addr = s.accept()

    print 'Connected with ' + addr[0] + ':' + str(addr[1])

    nick = conn.recv(1024)

    NotifyAll('Welcome ' + nick + ' to the room!')

    print data

    print str((threading.activeCount() + 1) / 2) + ' person(s)!'

    # conn.send(data)

    threading.Thread(target = ClientThreadIn , args = (conn,nick)).start()

    threading.Thread(target = ClientThreadOut , args = (conn,nick)).start()

    s.close()

    3.2 客戶端部分

    #!/usr/bin/env python

    # coding: utf-8

    # author: Paula

    # date: Mar-o3-2017

    """導入用到的包"""

    from Tkinter import *

    from oprate_db import * from time import sleep

    import socket

    import threading

    """將客戶端的實現(xiàn)部分封裝在此類中"""

    class Client(object):

    global msg_trans

    msg_trans=''

    def __init__(self,myId,name):

    """初始化socket"""

    self.sock = socket.socket(socket.AF_INET ,socket.SOCK_STREAM)

    self.sock.connect(('127.0.0.1',8888))

    self.inString = ''

    self.outString = ''

    self.nick =name

    self.sock.send(self.nick)

    self.myId =myId

    self.fromid = ''

    def DealOut(self,s,toid,myid,outstring):

    """輸出函數(shù),將用戶輸入的信息通過建立的 socket連接發(fā)送到服務(wù)器端"""

    toId = toid

    myId = myid

    msg = []

    self.outString = outstring

    self.outString = self.nick + ': ' + self.outString

    msg.append(toId)

    msg.append(myId)

    msg.append(self.outString)

    mssage=str(msg)

    s.send(mssage)

    def DealIn(self,s):

    """數(shù)據(jù)接入函數(shù),將服務(wù)器發(fā)來的數(shù)據(jù)進行分揀,接收發(fā)送給自己的消息

    或聊天室消息"""

    global msg_trans

    while True:

    self.inString = s.recv(1024)

    # print '2---7:', self.inString[2:7]

    if self.inString:

    If self.inString[2:7]==self.myId or self.inString[2:7]=='10000':

    self.fromid = self.inString[11:16]

    msg_trans = self.inString[21:-4]

    print 'deal in',msg_trans

    def mainrecv(self):

    """線程接收函數(shù),封裝多線程方法和數(shù)據(jù)接入函數(shù)"""

    thin = threading.Thread(target = self.DealIn, args = (self.sock,)) thin.start()

    # return

    def mainsend(self,toid,outstr):

    """線程發(fā)送函數(shù),封裝多線程方法和數(shù)據(jù)發(fā)送函數(shù)"""

    if self.inString[2:7]=='10000':

    to = '10000'

    elif self.fromid=='':

    to = toid

    else:

    to = self.fromid

    outstring = outstr

    # self.sock.send(self.nick)

    thout = threading.Thread(target = self.DealOut, args = (self.sock,to,self.myId,outstring,))

    thout.start()

    4 測試

    測試部分主要分為,單元測試、集成測試,分別對應(yīng)了開發(fā)過程中的編碼、概要設(shè)計、需求分析部分,經(jīng)過系統(tǒng)的測試可以暴露軟件中存在的缺陷,提高代碼可靠性,最終符合用戶需求。

    4.1 單元測試

    單元測試是(模塊測試)是開發(fā)者編寫的一小段代碼,用于檢測被測代碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用于判斷某個特定條件(或者場景)下某個特定函數(shù)的行為,是對單個的軟件單元或者一組相關(guān)的軟件單元進行的測試,是代碼級別的測試。

    經(jīng)過測試客戶端一對一單聊功能正常,客戶端正常連接服務(wù)器,客戶端可以接收其他用戶發(fā)來的消息,并將自己的消息發(fā)還給其他用戶。

    4.2 集成測試

    圖14 客戶端一對一聊天單元測試

    集成測試又叫組裝測試或聯(lián)合測試,是單元測試的多級擴展,是在單元測試的基礎(chǔ)上進行的一種有序測試,這種測試需要將所有模塊按照設(shè)計需求,逐步裝配成高層的功能模塊,并進行測試,直到整個軟件成為一個整體,集成測試旨在檢驗軟件單元之間的接口關(guān)系,以期望通過測試發(fā)現(xiàn)各軟件單元接口之間存在的問題,最終把經(jīng)過測試的單元組成符合設(shè)計要求的軟件。集成測試驗證程序和概要設(shè)計說明的一致性,任何不符合該說明的程序模塊行為都應(yīng)該加以記載并上報,因此集成測試是發(fā)現(xiàn)和改正模塊接口錯誤的重要階段。

    集成測試暴露出的問題:

    (1)底層通信實現(xiàn)時未用類進行封裝,導致代碼耦合度高降低了模塊獨立性。

    (2)底層通信實現(xiàn)時未預留足夠的接口,導致界面無法與功能進行對接。

    (3)接口間無法傳遞數(shù)值。

    經(jīng)過嚴謹?shù)募蓽y試主要暴露了以上三個問題,通過不斷對代碼進行優(yōu)化,對功能的內(nèi)部實現(xiàn)進行封裝,使用類變量和全局變量解決參數(shù)傳遞問題,定義了多個接口用于界面調(diào)用相應(yīng)的功能代碼,很好的解決的如上問題,降低了模塊的耦合程度,提高了模塊獨立性。

    5 結(jié)束語

    本次開發(fā)的程序是PyChat的1.0版本,本文設(shè)計聊天軟件以其信息傳遞迅速、占用系統(tǒng)資源少、易于維護、功能簡單實用、信息安全、占用較少的網(wǎng)絡(luò)資源等優(yōu)勢在企業(yè)、學校級別的大型局域網(wǎng)絡(luò)中擁有廣闊的運用前景。部署此局域網(wǎng)聊天系統(tǒng)僅需一臺服務(wù)器就可實現(xiàn)具有跨平臺特性的實時信息通訊。不過軟件還有很多不完善的地方,還有很多缺陷等待我去改進。在測試部分發(fā)現(xiàn),字體大小和字體顏色等功能還未實現(xiàn);系統(tǒng)的健壯性有待提高,非正常流程結(jié)束程序會導致端口占用無法開啟新的客戶端等缺陷。因此我需要進一步提高軟件的可用性,豐富軟件的功能。

    [1]Barry.P .林琪等譯.Head First Python[M].北京:中國電力出版社,2012.

    [2]Mark Summerifield.王弘博,孫傳義譯.Python3程序開發(fā)指南(第二版)[M].人民郵電出版社,2011.

    [3]Magnus Lie Hetland.司維,曾軍崴,譚穎華譯.Python基礎(chǔ)教程[M].北京:人民郵電出版社,2010.

    [4]蔡建平.軟件綜合開發(fā)案例教程--Linux、GCC、MySQL、Socket、Gtk+與開源案例[M](1版).北京:清華大學出版社,2011.

    [5] Ben Forta.鐘鳴,劉曉霞譯.SQL必知必會[M].北京:人民郵電出版社,2013.

    [6]John Goerzen.莫遲譯.Python網(wǎng)絡(luò)編程基礎(chǔ)[M].北京:電子工業(yè)出版社,2007.

    [7]Wesley J.Chun.宋吉廣譯.Python核心編程[M].北京:人民郵電出版社,2008.

    [8]沈潔元.簡明 Python教程[M].北京:清華大學出版社,2009.

    [9]Lasse Koskela.李貝譯.測試驅(qū)動開發(fā)的藝術(shù)[M].人民郵電出版社,2010.

    猜你喜歡
    服務(wù)器端聊天客戶端
    縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
    傳媒評論(2018年4期)2018-06-27 08:20:24
    孵化垂直頻道:新聞客戶端新策略
    傳媒評論(2018年4期)2018-06-27 08:20:16
    基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
    電子測試(2018年10期)2018-06-26 05:53:34
    淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
    成功(2018年10期)2018-03-26 02:56:14
    我就是不想跟你聊天了
    意林(2017年9期)2017-06-06 10:26:12
    敞開門聊天
    在Windows中安裝OpenVPN
    客戶端空間數(shù)據(jù)緩存策略
    網(wǎng)頁防篡改中分布式文件同步復制系統(tǒng)
    基于Struts的Web應(yīng)用系統(tǒng)數(shù)據(jù)驗證
    好男人视频免费观看在线| 丝袜在线中文字幕| 在线观看国产h片| 视频中文字幕在线观看| 国产xxxxx性猛交| 夫妻性生交免费视频一级片| 亚洲欧洲国产日韩| 国产日韩欧美视频二区| av视频免费观看在线观看| 国产色婷婷99| av在线观看视频网站免费| 2021少妇久久久久久久久久久| 亚洲,欧美,日韩| 色哟哟·www| 韩国精品一区二区三区 | 国产成人精品婷婷| 久久久久久人人人人人| 国产有黄有色有爽视频| 又大又黄又爽视频免费| 午夜免费鲁丝| 日韩欧美一区视频在线观看| 日韩不卡一区二区三区视频在线| 免费黄色在线免费观看| 中文字幕另类日韩欧美亚洲嫩草| 在线观看美女被高潮喷水网站| 日韩一区二区视频免费看| 极品人妻少妇av视频| 国产69精品久久久久777片| 国产成人精品无人区| 精品国产国语对白av| 亚洲在久久综合| 国国产精品蜜臀av免费| 欧美精品高潮呻吟av久久| 国产欧美日韩综合在线一区二区| 一级黄片播放器| 国产成人精品无人区| 亚洲精品国产av成人精品| 色94色欧美一区二区| 国产成人av激情在线播放| 国产午夜精品一二区理论片| 十分钟在线观看高清视频www| 精品99又大又爽又粗少妇毛片| 欧美亚洲 丝袜 人妻 在线| 亚洲国产精品成人久久小说| 在线天堂最新版资源| 在线观看免费高清a一片| 99国产精品免费福利视频| 欧美精品av麻豆av| 午夜视频国产福利| 国产成人精品婷婷| 少妇精品久久久久久久| 色吧在线观看| 国产日韩欧美亚洲二区| 亚洲欧美成人综合另类久久久| 啦啦啦啦在线视频资源| 午夜视频国产福利| 色哟哟·www| h视频一区二区三区| 又粗又硬又长又爽又黄的视频| 久久久a久久爽久久v久久| 少妇人妻久久综合中文| 三上悠亚av全集在线观看| 国产精品一国产av| 国产成人欧美| av免费观看日本| 国产成人欧美| 亚洲国产成人一精品久久久| 少妇高潮的动态图| 插逼视频在线观看| 国产精品 国内视频| 亚洲精品视频女| 日本vs欧美在线观看视频| 男女高潮啪啪啪动态图| 免费av不卡在线播放| 美女大奶头黄色视频| 成人手机av| 99热网站在线观看| 中国国产av一级| 嫩草影院入口| 99热全是精品| 亚洲av在线观看美女高潮| 日韩欧美一区视频在线观看| av视频免费观看在线观看| 全区人妻精品视频| 两性夫妻黄色片 | 五月开心婷婷网| 2021少妇久久久久久久久久久| 99热这里只有是精品在线观看| 美女视频免费永久观看网站| 黑人巨大精品欧美一区二区蜜桃 | 久久午夜福利片| 欧美亚洲 丝袜 人妻 在线| 岛国毛片在线播放| 99视频精品全部免费 在线| 黑丝袜美女国产一区| 亚洲国产色片| 蜜桃国产av成人99| 2021少妇久久久久久久久久久| 国产激情久久老熟女| 大香蕉久久成人网| 免费在线观看完整版高清| 在线观看www视频免费| 国产成人a∨麻豆精品| 美女主播在线视频| 精品国产露脸久久av麻豆| 午夜免费观看性视频| 丝袜在线中文字幕| 午夜91福利影院| 97在线视频观看| 丝袜脚勾引网站| 中国国产av一级| 观看av在线不卡| 大话2 男鬼变身卡| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 边亲边吃奶的免费视频| 免费黄频网站在线观看国产| 少妇 在线观看| 91在线精品国自产拍蜜月| 一本—道久久a久久精品蜜桃钙片| 亚洲国产精品一区二区三区在线| 80岁老熟妇乱子伦牲交| 欧美日韩亚洲高清精品| 丰满饥渴人妻一区二区三| 少妇猛男粗大的猛烈进出视频| 在线观看三级黄色| 亚洲熟女精品中文字幕| 精品国产露脸久久av麻豆| 亚洲精品一二三| 精品人妻一区二区三区麻豆| 人妻少妇偷人精品九色| 亚洲色图综合在线观看| 国产成人精品婷婷| 欧美日韩精品成人综合77777| 肉色欧美久久久久久久蜜桃| 日韩在线高清观看一区二区三区| 自线自在国产av| 曰老女人黄片| 中文字幕av电影在线播放| 亚洲综合色网址| 国产熟女午夜一区二区三区| 久久人妻熟女aⅴ| 在线精品无人区一区二区三| 精品久久久久久电影网| 国产成人精品婷婷| 欧美人与性动交α欧美精品济南到 | av黄色大香蕉| 亚洲欧美日韩另类电影网站| 卡戴珊不雅视频在线播放| 搡女人真爽免费视频火全软件| 我的女老师完整版在线观看| 亚洲精品国产色婷婷电影| 午夜av观看不卡| 亚洲第一区二区三区不卡| 精品少妇黑人巨大在线播放| 国产一区有黄有色的免费视频| 性色avwww在线观看| 男女边吃奶边做爰视频| 人人妻人人澡人人看| 91午夜精品亚洲一区二区三区| 亚洲成色77777| 日韩成人伦理影院| 国产免费又黄又爽又色| 婷婷成人精品国产| 国产精品久久久久久精品电影小说| 亚洲,一卡二卡三卡| 免费久久久久久久精品成人欧美视频 | 男女无遮挡免费网站观看| 中文字幕制服av| 最近2019中文字幕mv第一页| 人人妻人人添人人爽欧美一区卜| av免费在线看不卡| av免费观看日本| 亚洲精品久久成人aⅴ小说| 丝瓜视频免费看黄片| 欧美3d第一页| 国产精品久久久久久精品电影小说| 美女内射精品一级片tv| 美女xxoo啪啪120秒动态图| 精品久久蜜臀av无| av福利片在线| 日产精品乱码卡一卡2卡三| 欧美xxⅹ黑人| 人人妻人人澡人人爽人人夜夜| 色5月婷婷丁香| 一区二区日韩欧美中文字幕 | 午夜免费观看性视频| 久久久国产欧美日韩av| 国产欧美日韩一区二区三区在线| 国产精品一区www在线观看| 精品国产国语对白av| 人人妻人人添人人爽欧美一区卜| 一级片'在线观看视频| 18禁裸乳无遮挡动漫免费视频| 超色免费av| 22中文网久久字幕| 日本-黄色视频高清免费观看| 国产在线免费精品| 人妻一区二区av| 考比视频在线观看| 国产xxxxx性猛交| 久久久a久久爽久久v久久| 九九爱精品视频在线观看| 天天影视国产精品| 亚洲,欧美,日韩| 亚洲成色77777| 亚洲精品日韩在线中文字幕| 国产国语露脸激情在线看| 免费av中文字幕在线| 国产成人免费无遮挡视频| 国内精品宾馆在线| 亚洲精品日本国产第一区| 在线观看免费日韩欧美大片| 日韩伦理黄色片| 搡老乐熟女国产| 久久久久人妻精品一区果冻| 一本大道久久a久久精品| 国产成人欧美| 欧美成人午夜免费资源| 久久久精品免费免费高清| 中国美白少妇内射xxxbb| 免费av不卡在线播放| 男女啪啪激烈高潮av片| 久久精品国产自在天天线| 美女国产视频在线观看| 国产精品免费大片| 国产视频首页在线观看| 99久久精品国产国产毛片| 国产高清国产精品国产三级| 久久久国产一区二区| 成人无遮挡网站| 成年人午夜在线观看视频| 极品少妇高潮喷水抽搐| 免费看不卡的av| 看免费成人av毛片| 日韩一本色道免费dvd| 国产成人免费观看mmmm| 91在线精品国自产拍蜜月| 春色校园在线视频观看| 久久人人爽人人片av| 一个人免费看片子| 人人妻人人爽人人添夜夜欢视频| 色网站视频免费| 日韩伦理黄色片| 青青草视频在线视频观看| 最后的刺客免费高清国语| 国产成人欧美| 国产成人精品一,二区| 亚洲精品美女久久av网站| 精品国产露脸久久av麻豆| 午夜福利在线观看免费完整高清在| 亚洲国产av影院在线观看| 久久午夜综合久久蜜桃| 一本久久精品| 一级黄片播放器| 晚上一个人看的免费电影| 午夜视频国产福利| 在线看a的网站| 男人操女人黄网站| www.熟女人妻精品国产 | 国产高清三级在线| av有码第一页| 日韩一本色道免费dvd| 国产精品 国内视频| 91午夜精品亚洲一区二区三区| 久久99蜜桃精品久久| 日韩精品有码人妻一区| 自拍欧美九色日韩亚洲蝌蚪91| 激情五月婷婷亚洲| 亚洲 欧美一区二区三区| 一级毛片我不卡| 99久久精品国产国产毛片| 三级国产精品片| 99久久人妻综合| 亚洲,欧美,日韩| 国产白丝娇喘喷水9色精品| 国产福利在线免费观看视频| av在线观看视频网站免费| 日韩制服骚丝袜av| 欧美国产精品一级二级三级| 亚洲 欧美一区二区三区| 一本大道久久a久久精品| 青春草国产在线视频| 黑人巨大精品欧美一区二区蜜桃 | 亚洲国产av新网站| 国产国拍精品亚洲av在线观看| 久久久精品94久久精品| 91精品伊人久久大香线蕉| 中文乱码字字幕精品一区二区三区| 久久精品久久久久久久性| 男女午夜视频在线观看 | 爱豆传媒免费全集在线观看| 波多野结衣一区麻豆| 免费在线观看黄色视频的| 欧美另类一区| 99精国产麻豆久久婷婷| 久久久久国产网址| 亚洲第一区二区三区不卡| 两性夫妻黄色片 | 一级片免费观看大全| 69精品国产乱码久久久| 成人国产av品久久久| 亚洲激情五月婷婷啪啪| 人人妻人人澡人人看| 国产精品欧美亚洲77777| 国产精品久久久久久av不卡| 亚洲精品日本国产第一区| 女的被弄到高潮叫床怎么办| 成年女人在线观看亚洲视频| 黄色配什么色好看| 国产精品 国内视频| 日本vs欧美在线观看视频| 美女xxoo啪啪120秒动态图| 大香蕉97超碰在线| 18禁动态无遮挡网站| 精品人妻在线不人妻| 久久精品人人爽人人爽视色| 久久人人爽人人爽人人片va| 国产av国产精品国产| 性色avwww在线观看| www日本在线高清视频| 亚洲综合精品二区| 国产精品一区www在线观看| 在线观看www视频免费| 18禁观看日本| 精品一区二区三卡| 欧美激情 高清一区二区三区| 亚洲国产日韩一区二区| 亚洲av电影在线进入| 天堂中文最新版在线下载| 伊人亚洲综合成人网| 国产精品无大码| 自拍欧美九色日韩亚洲蝌蚪91| 黑人猛操日本美女一级片| 久久 成人 亚洲| 国产精品一区www在线观看| 日日啪夜夜爽| 久久精品aⅴ一区二区三区四区 | 好男人视频免费观看在线| 少妇 在线观看| 精品亚洲乱码少妇综合久久| 在线观看免费视频网站a站| 捣出白浆h1v1| 高清黄色对白视频在线免费看| 国产精品无大码| 国产一区亚洲一区在线观看| 两个人看的免费小视频| 性色avwww在线观看| 国产日韩欧美视频二区| 久热久热在线精品观看| 99久久人妻综合| 亚洲国产看品久久| 国产av码专区亚洲av| 日韩三级伦理在线观看| 色婷婷久久久亚洲欧美| 国产精品国产av在线观看| 日本av免费视频播放| 狂野欧美激情性xxxx在线观看| 在线 av 中文字幕| 国产成人精品一,二区| 永久网站在线| 爱豆传媒免费全集在线观看| 国产精品熟女久久久久浪| 久久久久久人妻| 亚洲久久久国产精品| 日韩精品有码人妻一区| 国产视频首页在线观看| 亚洲 欧美一区二区三区| www日本在线高清视频| 久久久久久久大尺度免费视频| 亚洲国产精品国产精品| 国产伦理片在线播放av一区| 国产免费一级a男人的天堂| 国产欧美日韩综合在线一区二区| √禁漫天堂资源中文www| 9191精品国产免费久久| 一边亲一边摸免费视频| 深夜精品福利| 最近最新中文字幕大全免费视频 | 狠狠精品人妻久久久久久综合| 久久这里有精品视频免费| 久久久国产精品麻豆| 在线观看免费日韩欧美大片| 777米奇影视久久| 大片免费播放器 马上看| 少妇 在线观看| 亚洲第一av免费看| 日韩熟女老妇一区二区性免费视频| 男女啪啪激烈高潮av片| 一本色道久久久久久精品综合| xxxhd国产人妻xxx| 亚洲五月色婷婷综合| 亚洲少妇的诱惑av| 久久久久国产网址| 只有这里有精品99| 最后的刺客免费高清国语| 亚洲精品成人av观看孕妇| 国产高清三级在线| 五月开心婷婷网| 免费人妻精品一区二区三区视频| 777米奇影视久久| 最后的刺客免费高清国语| 国产爽快片一区二区三区| 欧美人与善性xxx| 亚洲精品视频女| 亚洲国产欧美在线一区| 美女福利国产在线| 黄网站色视频无遮挡免费观看| 国产成人精品一,二区| 国产免费一级a男人的天堂| 国产男女内射视频| 国产成人aa在线观看| 少妇的逼水好多| 日产精品乱码卡一卡2卡三| 免费大片18禁| 香蕉精品网在线| 国产一区二区三区综合在线观看 | a 毛片基地| 久久婷婷青草| 亚洲av国产av综合av卡| 久久久精品94久久精品| 亚洲少妇的诱惑av| 日韩一本色道免费dvd| 一区二区三区四区激情视频| 一个人免费看片子| 精品人妻偷拍中文字幕| 亚洲精品久久午夜乱码| 国产高清三级在线| 汤姆久久久久久久影院中文字幕| 久久精品久久精品一区二区三区| 涩涩av久久男人的天堂| 亚洲精品乱码久久久久久按摩| 免费观看无遮挡的男女| 一个人免费看片子| 日韩av在线免费看完整版不卡| 久久热在线av| 女的被弄到高潮叫床怎么办| 人体艺术视频欧美日本| 又粗又硬又长又爽又黄的视频| 亚洲国产精品成人久久小说| 欧美老熟妇乱子伦牲交| 26uuu在线亚洲综合色| 午夜老司机福利剧场| 免费少妇av软件| 18在线观看网站| 9191精品国产免费久久| 久久狼人影院| 香蕉国产在线看| 丰满少妇做爰视频| 成年动漫av网址| 亚洲精品,欧美精品| 丝袜美足系列| 久久这里有精品视频免费| 亚洲色图 男人天堂 中文字幕 | 午夜福利网站1000一区二区三区| 啦啦啦视频在线资源免费观看| 日韩一区二区三区影片| 老司机影院毛片| 久久青草综合色| 久久人人97超碰香蕉20202| 午夜免费男女啪啪视频观看| 成人毛片a级毛片在线播放| 校园人妻丝袜中文字幕| 夜夜爽夜夜爽视频| 亚洲天堂av无毛| 97在线视频观看| 女人被躁到高潮嗷嗷叫费观| 插逼视频在线观看| 18禁裸乳无遮挡动漫免费视频| 精品亚洲乱码少妇综合久久| 丰满迷人的少妇在线观看| 热re99久久精品国产66热6| 伦理电影大哥的女人| 日日撸夜夜添| 日本欧美国产在线视频| av视频免费观看在线观看| 两性夫妻黄色片 | 免费观看性生交大片5| 99久久人妻综合| 永久免费av网站大全| 国产精品女同一区二区软件| 纯流量卡能插随身wifi吗| 人体艺术视频欧美日本| 十分钟在线观看高清视频www| 免费日韩欧美在线观看| 一区二区日韩欧美中文字幕 | 人人妻人人澡人人看| 高清不卡的av网站| 又黄又爽又刺激的免费视频.| av在线观看视频网站免费| videossex国产| 秋霞伦理黄片| 久久精品久久久久久噜噜老黄| 王馨瑶露胸无遮挡在线观看| 亚洲精品久久午夜乱码| 国产免费又黄又爽又色| 国产一区二区三区av在线| 人妻人人澡人人爽人人| 午夜福利乱码中文字幕| 日韩精品有码人妻一区| 国产黄色视频一区二区在线观看| 看十八女毛片水多多多| 有码 亚洲区| 黑人巨大精品欧美一区二区蜜桃 | 国产成人a∨麻豆精品| 日韩精品免费视频一区二区三区 | av天堂久久9| 韩国高清视频一区二区三区| 黑丝袜美女国产一区| 91久久精品国产一区二区三区| 日韩制服丝袜自拍偷拍| 日韩av在线免费看完整版不卡| 美女内射精品一级片tv| 国产av一区二区精品久久| 国产麻豆69| 日韩一区二区三区影片| 亚洲第一区二区三区不卡| 国产成人av激情在线播放| 国产在线一区二区三区精| 一区在线观看完整版| 天堂俺去俺来也www色官网| 91午夜精品亚洲一区二区三区| av电影中文网址| 久久久久久久久久人人人人人人| 看非洲黑人一级黄片| 韩国精品一区二区三区 | 曰老女人黄片| 男女下面插进去视频免费观看 | 大话2 男鬼变身卡| av电影中文网址| 大话2 男鬼变身卡| 9热在线视频观看99| 亚洲精品自拍成人| 亚洲精品成人av观看孕妇| 亚洲av欧美aⅴ国产| 午夜福利影视在线免费观看| 国产精品.久久久| 黑人欧美特级aaaaaa片| 久久精品aⅴ一区二区三区四区 | 成年女人在线观看亚洲视频| 成人黄色视频免费在线看| 女人精品久久久久毛片| 老熟女久久久| 香蕉国产在线看| 18禁动态无遮挡网站| 国产黄频视频在线观看| www日本在线高清视频| 国产av码专区亚洲av| 校园人妻丝袜中文字幕| 高清视频免费观看一区二区| 天美传媒精品一区二区| 久久久久久久久久成人| 久久青草综合色| 欧美激情国产日韩精品一区| 观看美女的网站| 色5月婷婷丁香| 国产成人免费观看mmmm| 欧美 日韩 精品 国产| 久久精品国产自在天天线| 久热久热在线精品观看| 亚洲色图 男人天堂 中文字幕 | 久久婷婷青草| 欧美精品国产亚洲| 国产精品麻豆人妻色哟哟久久| 精品一区二区三区四区五区乱码 | 国产精品久久久久久精品古装| 中文欧美无线码| 婷婷色av中文字幕| 最黄视频免费看| 18禁观看日本| 极品人妻少妇av视频| 亚洲图色成人| 七月丁香在线播放| 丝瓜视频免费看黄片| 18禁裸乳无遮挡动漫免费视频| 亚洲少妇的诱惑av| 99热网站在线观看| 三上悠亚av全集在线观看| 国产精品秋霞免费鲁丝片| 黄色 视频免费看| 五月伊人婷婷丁香| 免费黄网站久久成人精品| 亚洲熟女精品中文字幕| 亚洲精品456在线播放app| 国产一区二区三区av在线| 国产 精品1| 国产精品成人在线| 少妇人妻精品综合一区二区| 视频在线观看一区二区三区| 亚洲av综合色区一区| 搡女人真爽免费视频火全软件| 日日啪夜夜爽| 一级片'在线观看视频| 欧美变态另类bdsm刘玥| 日韩成人av中文字幕在线观看| 亚洲久久久国产精品| 免费观看无遮挡的男女| 亚洲经典国产精华液单| 国语对白做爰xxxⅹ性视频网站| 久久人妻熟女aⅴ| 下体分泌物呈黄色| 亚洲一区二区三区欧美精品| 亚洲精品第二区| 国产一区二区在线观看日韩| 18禁动态无遮挡网站| 色婷婷av一区二区三区视频| 日韩电影二区| av一本久久久久| 国产一区二区三区综合在线观看 | 日韩,欧美,国产一区二区三区| 亚洲精品av麻豆狂野| 亚洲人成77777在线视频| 丰满少妇做爰视频| 亚洲精品aⅴ在线观看| 亚洲欧美日韩另类电影网站| 69精品国产乱码久久久|