久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

C++課程設(shè)計(jì)實(shí)戰(zhàn):即時(shí)通信系統(tǒng)架構(gòu)與網(wǎng)絡(luò)編程核心解析

C++課程設(shè)計(jì)實(shí)戰(zhàn):即時(shí)通信系統(tǒng)架構(gòu)與網(wǎng)絡(luò)編程核心解析 簡(jiǎn)介來(lái)自吉林大學(xué)軟件學(xué)院的C課程設(shè)計(jì)優(yōu)秀作品圍繞“模擬即時(shí)通信系統(tǒng)”展開(kāi)以面向?qū)ο蟪绦蛟O(shè)計(jì)方法實(shí)現(xiàn)類QQ/微信整合平臺(tái)的用戶基本信息、好友管理、群管理三大核心模塊。支持好友增刪改查、共同好友推薦以及群加入、退出、成員查詢、臨時(shí)討論組等差異化策略貼近真實(shí)社交軟件業(yè)務(wù)邏輯適合C課程設(shè)計(jì)選題參考或進(jìn)階練習(xí)。資源包共153個(gè)文件以cpp/h源碼、sln/vcxproj工程配置、exe可執(zhí)行程序及SQLite數(shù)據(jù)庫(kù)為主體附帶調(diào)試記錄與編譯中間文件整體約354MB結(jié)構(gòu)完整便于直接研讀與運(yùn)行驗(yàn)證。已有1317人瀏覽學(xué)習(xí)。這份作品的價(jià)值在于呈現(xiàn)了一個(gè)可運(yùn)行、可擴(kuò)展的完整課設(shè)方案源碼模塊劃分清晰如Tencent_information、Chat_function、judgment等并附有可直接運(yùn)行的exe和數(shù)據(jù)庫(kù)文件能幫助讀者快速理解面向?qū)ο蠼Ec文件/數(shù)據(jù)庫(kù)操作的綜合應(yīng)用也可作為答辯展示和功能擴(kuò)展的起點(diǎn)。1. 一份C課程設(shè)計(jì)資源包即時(shí)通信系統(tǒng)恰好踩中了課程設(shè)計(jì)的核心考點(diǎn)如果說(shuō)C面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)里有一個(gè)既能拿高分又不會(huì)爛大街的選題即時(shí)通信系統(tǒng)一定是排在前三的那個(gè)。我這次拆的這個(gè)源碼包功能閉環(huán)很完整注冊(cè)登錄、好友管理、單聊與群聊、離線消息附帶設(shè)計(jì)文檔和答辯參考。它最大的價(jià)值不是“能跑通”而是把網(wǎng)絡(luò)收發(fā)、界面渲染、業(yè)務(wù)狀態(tài)拆成了顆粒清晰的類真正對(duì)得起面向?qū)ο筮@四個(gè)字。適合正在找課程設(shè)計(jì)素材、準(zhǔn)備答辯、或者想補(bǔ)一下“從demo變成可演示系統(tǒng)”這一課的人。模塊拆得好后面驗(yàn)收、答辯、二次開(kāi)發(fā)都省事。2. 整體架構(gòu)與類設(shè)計(jì)七張類圖把網(wǎng)絡(luò)、界面、數(shù)據(jù)徹底切開(kāi)2.1 為什么一個(gè)課程設(shè)計(jì)值得用C/S架構(gòu)和分層來(lái)做很多同學(xué)的課程設(shè)計(jì)喜歡做單機(jī)通訊錄代碼量不大但答辯時(shí)老師問(wèn)一句“你這個(gè)核心業(yè)務(wù)流程怎么擴(kuò)展”基本就卡住了。即時(shí)通信系統(tǒng)天然是C/S架構(gòu)客戶端負(fù)責(zé)交互服務(wù)器負(fù)責(zé)轉(zhuǎn)發(fā)與狀態(tài)維護(hù)這個(gè)拆分本身就逼著你做模塊化設(shè)計(jì)。我在這個(gè)資源包里看到的做法是三層結(jié)構(gòu)表現(xiàn)層登錄窗口、主窗口、聊天窗口只做界面渲染與用戶操作響應(yīng)。業(yè)務(wù)層好友管理、消息路由、登錄態(tài)校驗(yàn)不依賴具體socket代碼。數(shù)據(jù)層賬號(hào)存儲(chǔ)、會(huì)話記錄接口與實(shí)現(xiàn)分離。這個(gè)選型的好處很直接網(wǎng)絡(luò)模塊掛了界面不應(yīng)該跟著卡死數(shù)據(jù)庫(kù)換了業(yè)務(wù)層不需要改。課程設(shè)計(jì)答辯時(shí)老師問(wèn)到“為什么這么設(shè)計(jì)”三層分離是最容易講清楚的答案。我一般會(huì)建議照著這個(gè)結(jié)構(gòu)做因?yàn)樗墙?jīng)過(guò)大量項(xiàng)目驗(yàn)證過(guò)的不是課程設(shè)計(jì)特有的產(chǎn)物。2.2 核心類與對(duì)象關(guān)系從基類抽象到接口回調(diào)類設(shè)計(jì)是整個(gè)資源包的重頭戲。它的核心類可以概括成六個(gè)CNetCore負(fù)責(zé)socket收發(fā)CMsgProtocol負(fù)責(zé)協(xié)議編解碼CUser封裝用戶信息CRoom管群聊成員CAccountStore管賬號(hào)數(shù)據(jù)CMsgEvent作為事件載體在業(yè)務(wù)層流轉(zhuǎn)。// netcore.h #pragma once #include winsock2.h #include QString class CNetCore { public: bool Startup(); // 初始化 Winsock 并創(chuàng)建 socket bool ConnectTo(const QString host, quint16 port); bool SendPacket(const char* data, int len); int RecvPacket(char* buffer, int capacity); void Close(); private: SOCKET sock_; bool isConnected_; };這個(gè)類的設(shè)計(jì)有一點(diǎn)很關(guān)鍵把SOCKET封裝成成員變量外部代碼不直接碰句柄所有對(duì)socket的操作都收口到CNetCore的方法里。ConnectTo接收主機(jī)名和端口內(nèi)部完成域名解析與connect調(diào)用SendPacket只負(fù)責(zé)把字節(jié)流發(fā)出去不關(guān)心它是什么協(xié)議這樣協(xié)議層與傳輸層就解耦了。你可能會(huì)問(wèn)為什么不把協(xié)議解析也放進(jìn)CNetCore因?yàn)槁氊?zé)不同。CNetCore解決“怎么把數(shù)據(jù)發(fā)出去”CMsgProtocol解決“發(fā)出去的數(shù)據(jù)長(zhǎng)什么樣”?;煸谝黄鸷蟾膭?dòng)協(xié)議會(huì)導(dǎo)致網(wǎng)絡(luò)模塊全部重編沒(méi)必要。2.3 數(shù)據(jù)層實(shí)現(xiàn)賬號(hào)存儲(chǔ)與登錄態(tài)分離賬號(hào)數(shù)據(jù)在這個(gè)項(xiàng)目里用的是SQLite表結(jié)構(gòu)就兩張一張存賬號(hào)信息一張存好友關(guān)系。CAccountStore對(duì)外暴露Register、Verify、GetFriendList三個(gè)方法內(nèi)部是參數(shù)化SQL語(yǔ)句避免拼字符串帶來(lái)的注入問(wèn)題。bool CAccountStore::Register(const QString name, const QString pwd) { QSqlQuery query(db_); query.prepare(INSERT INTO t_account(name, pwd_hash) VALUES(?, ?)); query.addBindValue(name); query.addBindValue(EncryptPwd(pwd)); return query.exec(); } bool CAccountStore::Verify(const QString name, const QString pwd) { QSqlQuery query(db_); query.prepare(SELECT pwd_hash FROM t_account WHERE name ?); query.addBindValue(name); if (!query.exec() || !query.next()) return false; return query.value(0).toString() EncryptPwd(pwd); }EncryptPwd這里用的是簡(jiǎn)單哈希加鹽不是明文存密碼。課程設(shè)計(jì)階段不需要上多復(fù)雜的加密但至少要有這個(gè)意識(shí)。你仔細(xì)看這個(gè)設(shè)計(jì)CAccountStore沒(méi)有任何網(wǎng)絡(luò)相關(guān)代碼它不知道消息從哪來(lái)這保證了數(shù)據(jù)層可以被單獨(dú)測(cè)試。我之前看到過(guò)不少課程設(shè)計(jì)把SQL語(yǔ)句直接寫進(jìn)窗口類里窗口關(guān)閉時(shí)數(shù)據(jù)庫(kù)連接還開(kāi)著邏輯全攪在一起Debug時(shí)全是玄學(xué)問(wèn)題。這個(gè)資源包的做法才是能落地的。3. 網(wǎng)絡(luò)模塊與消息協(xié)議從socket到可靠收發(fā)要走完的三步3.1 客戶端socket封裝初始化、連接、非阻塞模式網(wǎng)絡(luò)模塊是即時(shí)通信系統(tǒng)里最容易翻車的地方原因不是socket本身難而是隱藏狀態(tài)太多。資源包里CNetCore::Startup()的實(shí)現(xiàn)很有代表性。bool CNetCore::Startup() { WSADATA wsaData; int rc WSAStartup(MAKEWORD(2, 2), wsaData); if (rc ! 0) { qDebug() WSAStartup failed: rc; return false; } sock_ socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock_ INVALID_SOCKET) { qDebug() socket create failed: WSAGetLastError(); WSACleanup(); return false; } u_long mode 1; ioctlsocket(sock_, FIONBIO, mode); // 切換非阻塞模式 return true; }注意兩個(gè)細(xì)節(jié)。第一WSAStartup必須檢查返回值它失敗時(shí)后續(xù)所有socket調(diào)用都會(huì)報(bào)10107之類的“套接字版本協(xié)商失敗”錯(cuò)誤很多人第一次跑Windows網(wǎng)絡(luò)程序都會(huì)栽在這。第二ioctlsocket把socket切成非阻塞后recv在沒(méi)有數(shù)據(jù)到來(lái)時(shí)會(huì)立即返回SOCKET_ERROR錯(cuò)誤碼是WSAEWOULDBLOCK。這個(gè)錯(cuò)誤不是異常是正?,F(xiàn)象邏輯里必須把它和真正的網(wǎng)絡(luò)錯(cuò)誤區(qū)分開(kāi)。3.2 協(xié)議頭設(shè)計(jì)長(zhǎng)度頭、類型頭與負(fù)載分離消息協(xié)議是這個(gè)項(xiàng)目最值得抄作業(yè)的部分。它的格式是“4字節(jié)消息總長(zhǎng)度 2字節(jié)消息類型 負(fù)載”負(fù)載是utf8編碼的JSON字符串。這樣設(shè)計(jì)的好處是黏包和半包都能處理。QByteArray BuildPacket(quint16 msgType, const QByteArray payload) { QByteArray packet; quint32 len payload.size(); packet.append(char((len 24) 0xFF)); packet.append(char((len 16) 0xFF)); packet.append(char((len 8) 0xFF)); packet.append(char(len 0xFF)); packet.append(char((msgType 8) 0xFF)); packet.append(char(msgType 0xFF)); packet.append(payload); return packet; }大端序存儲(chǔ)有一個(gè)實(shí)際好處調(diào)試時(shí)用十六進(jìn)制查看數(shù)據(jù)包長(zhǎng)度字段一眼就能讀出來(lái)不用考慮小端序的字節(jié)交換。msgType占2字節(jié)預(yù)留了從0到65535的消息類型空間對(duì)課程設(shè)計(jì)來(lái)說(shuō)綽綽有余。接收端的解析不是一次性能做完的。TCP是字節(jié)流它不保證每次recv拿到的正好是一個(gè)完整的數(shù)據(jù)包。資源包里的做法是維護(hù)一個(gè)接收緩沖區(qū)和TryDecode函數(shù)bool CMsgProtocol::TryDecode(QByteArray buffer, CMessage out) { while (buffer.size() HEADER_LEN) { quint32 len (quint8(buffer[0]) 24) | (quint8(buffer[1]) 16) | (quint8(buffer[2]) 8) | (quint8(buffer[3])); if (len MAX_PAYLOAD) { buffer.clear(); return false; // 數(shù)據(jù)異常防止惡意包撐爆內(nèi)存 } if (buffer.size() HEADER_LEN len) { return false; // 半包等更多數(shù)據(jù) } quint16 type (quint8(buffer[4]) 8) | quint8(buffer[5]); out.SetType(type); out.SetPayload(buffer.mid(HEADER_LEN, len)); buffer.remove(0, HEADER_LEN len); return true; // 取出一條完整消息 } return false; }每次recv到新數(shù)據(jù)后把數(shù)據(jù)追加到緩沖區(qū)末尾再調(diào)用TryDecode循環(huán)解析。如果返回值是半包說(shuō)明數(shù)據(jù)還沒(méi)收全等下一輪再試。這個(gè)邏輯一旦寫成粘包、拆包問(wèn)題基本一次解決不會(huì)再出現(xiàn)“消息錯(cuò)位”的詭異問(wèn)題。3.3 服務(wù)器并發(fā)select復(fù)用與請(qǐng)求處理邊界服務(wù)器端這個(gè)項(xiàng)目用的是select模型線程數(shù)固定一個(gè)監(jiān)聽(tīng)socket加若干個(gè)客戶端socket。select的好處是單線程處理多路IO比開(kāi)一堆線程更可控對(duì)課程設(shè)計(jì)的并發(fā)量完全夠用。fd_set readSet; FD_ZERO(readSet); FD_SET(listenSock, readSet); for (SOCKET s : clients) FD_SET(s, readSet); timeval tv {1, 0}; int ret select(0, readSet, nullptr, nullptr, tv); if (ret 0) { if (FD_ISSET(listenSock, readSet)) { // accept 新連接加入 clients 容器 } for (SOCKET s : clients) { if (FD_ISSET(s, readSet)) { // recv數(shù)據(jù)交給 CMsgProtocol 解析 } } }select的超時(shí)時(shí)間設(shè)成1秒還有一個(gè)隱藏作用即使沒(méi)有網(wǎng)絡(luò)事件主循環(huán)每秒都會(huì)醒一次趁機(jī)做心跳超時(shí)檢測(cè)把長(zhǎng)時(shí)間沒(méi)發(fā)心跳的客戶端踢下線。課程設(shè)計(jì)如果要演示“客戶端崩潰后服務(wù)器能感知”這個(gè)機(jī)制是必要的。服務(wù)器每次recv都盡量把緩沖區(qū)讀完但不要把耗時(shí)操作放在網(wǎng)絡(luò)循環(huán)里比如寫數(shù)據(jù)庫(kù)可以丟到任務(wù)隊(duì)列里否則一個(gè)客戶端的大量消息會(huì)把整個(gè)服務(wù)器的響應(yīng)拖慢。4. 界面邏輯與線程模型UI和網(wǎng)絡(luò)分離消息隊(duì)列不卡窗口4.1 跨線程通信把網(wǎng)絡(luò)線程的數(shù)據(jù)安全地送到界面線程很多課程設(shè)計(jì)在第一次演示時(shí)都會(huì)出現(xiàn)一個(gè)尷尬場(chǎng)景聊天窗口拖動(dòng)時(shí)卡頓或者干脆“窗口未響應(yīng)”。原因幾乎都是網(wǎng)絡(luò)數(shù)據(jù)處理在UI線程里執(zhí)行了。這個(gè)資源包給的做法是網(wǎng)絡(luò)線程負(fù)責(zé)收包解析界面線程只負(fù)責(zé)渲染。// worker.h class NetWorker : public QObject { Q_OBJECT public slots: void OnReadyRead(); // 網(wǎng)絡(luò)線程收到數(shù)據(jù) signals: void MessageReceived(const CMessage msg); void ParseError(const QString desc); };在工作線程里發(fā)信號(hào)信號(hào)攜帶的是自定義類型CMessage所以必須先調(diào)用qRegisterMetaTypeCMessage()注冊(cè)否則連接時(shí)會(huì)直接報(bào)錯(cuò)。// mainwindow.cpp connect(netWorker_, NetWorker::MessageReceived, this, MainWindow::OnMessageReceived, Qt::QueuedConnection);Qt::QueuedConnection是這里最關(guān)鍵的一個(gè)參數(shù)。它保證信號(hào)投遞到接收者的事件循環(huán)中而不是立即執(zhí)行。這樣即使網(wǎng)絡(luò)線程短時(shí)間內(nèi)收到大量消息界面線程也只是每條都排隊(duì)處理窗口不會(huì)因?yàn)榉磸?fù)重繪而卡死。如果你用的是非Qt框架對(duì)應(yīng)方案是封裝一個(gè)線程安全消息隊(duì)列UI線程定時(shí)取同樣能達(dá)到這個(gè)效果。4.2 登錄到主界面的狀態(tài)切換別用if堆邏輯登錄、注冊(cè)、主界面之間的跳轉(zhuǎn)這個(gè)項(xiàng)目用一個(gè)簡(jiǎn)單的狀態(tài)機(jī)來(lái)管理。登錄成功后把用戶信息和好友列表寫進(jìn)內(nèi)存再切換主窗口登錄失敗留在當(dāng)前窗口并給出提示。void LoginWindow::OnLoginResult(bool ok, const QString reason) { if (ok) { MainWindow* w new MainWindow(user_, friendList_); w-show(); this-close(); } else { QMessageBox::warning(this, 登錄失敗, reason); } }注意這里不是直接new一個(gè)窗口就好而是要把登錄結(jié)果里拿到的好友列表指針傳給主窗口。如果不傳主窗口還得再查一遍數(shù)據(jù)庫(kù)相當(dāng)于繞了一圈。有些實(shí)現(xiàn)會(huì)在兩個(gè)窗口之間維護(hù)一堆全局變量一旦處理“賬號(hào)被踢下線”就會(huì)漏狀態(tài)。4.3 好友列表與聊天窗口增量刷新比全量重建可靠主窗口的好友列表這個(gè)版本用的是QListWidget但它不是每次都clear()再重新插入。每次只對(duì)有狀態(tài)變化的條目做更新這樣有兩個(gè)好處一是列表不會(huì)閃爍二是不會(huì)丟焦點(diǎn)。聊天窗口的消息列表同理新消息到達(dá)時(shí)只追加一條QListWidgetItem并且自動(dòng)滾動(dòng)到底部。void ChatWindow::AppendMessage(const QString sender, const QString content) { QListWidgetItem* item new QListWidgetItem( QString(%1: %2).arg(sender, content)); listWidget_-addItem(item); listWidget_-scrollToBottom(); }這里我見(jiàn)過(guò)最常見(jiàn)的翻車姿勢(shì)是直接在聊天窗口構(gòu)造函數(shù)里創(chuàng)建一個(gè)新的QListWidgetItem給每條歷史消息然后還手動(dòng)控制setCurrentRow結(jié)果窗口加載幾十條消息后就開(kāi)始閃爍。資源包的做法是歷史消息和實(shí)時(shí)消息走同一個(gè)AppendMessage入口統(tǒng)一行為就可預(yù)期。5. 排障與常見(jiàn)問(wèn)題五個(gè)把分?jǐn)?shù)拉低的踩坑記錄5.1 粘包與半包導(dǎo)致消息錯(cuò)位現(xiàn)象A發(fā)送“你好”和“再見(jiàn)”兩條消息B收到的卻是“你”和“好再見(jiàn)”。原因TCP把兩條消息放進(jìn)同一個(gè)TCP段發(fā)出接收端一次recv讀到了兩條完整數(shù)據(jù)但程序只按一條來(lái)處理第二條多出來(lái)的字節(jié)留在了緩沖區(qū)里下一次再來(lái)數(shù)據(jù)時(shí)就錯(cuò)位了。解決緩沖區(qū)加協(xié)議長(zhǎng)度頭處理上一章講的TryDecode就是完整的解決方案。從那以后我寫網(wǎng)絡(luò)程序第一時(shí)間先定協(xié)議長(zhǎng)度頭不是先寫收發(fā)邏輯。5.2 服務(wù)器select返回后立即空轉(zhuǎn)現(xiàn)象服務(wù)器CPU占用接近100%但客戶端沒(méi)有發(fā)任何數(shù)據(jù)。原因socket被設(shè)置成非阻塞后accept返回INVALID_SOCKET有些代碼沒(méi)有檢查這個(gè)值就把無(wú)效socket加入fd_setselect每次都因?yàn)闊o(wú)效句柄觸發(fā)異常返回業(yè)務(wù)循環(huán)就變成了死循環(huán)。解決accept和recv必須要判定失敗分支。accept返回INVALID_SOCKET且WSAGetLastError為WSAEWOULDBLOCK時(shí)直接跳過(guò)本輪。順帶檢查clients容器里是否有已關(guān)閉連接發(fā)現(xiàn)有FD_CLOSE事件就移出集合并closesocket。5.3 界面線程被網(wǎng)絡(luò)阻塞假死現(xiàn)象拖動(dòng)聊天窗口時(shí)整個(gè)程序沒(méi)反應(yīng)Windows提示“未響應(yīng)”。原因recv被設(shè)計(jì)成行代碼直接寫在按鈕點(diǎn)擊事件里網(wǎng)絡(luò)沒(méi)數(shù)據(jù)時(shí)就會(huì)一直阻塞在那里UI線程完全被卡住。解決網(wǎng)絡(luò)收發(fā)全部移到獨(dú)立線程界面通過(guò)隊(duì)列接收消息。只要做到“UI線程不碰socket”這類問(wèn)題基本不會(huì)出現(xiàn)。5.4 中文用戶名亂碼現(xiàn)象用UTF-8編碼的用戶名注冊(cè)成功后服務(wù)器端讀出來(lái)是一串亂碼。原因Windows默認(rèn)的本地代碼頁(yè)是GBK客戶端界面輸入的QString在本地代碼頁(yè)模式下被轉(zhuǎn)換成GBK字節(jié)流而服務(wù)器端解析時(shí)仍按UTF-8處理字節(jié)解釋不一致就亂碼了。解決統(tǒng)一編碼在協(xié)議層明確是UTF-8。寫入socket前用QString::toUtf8()讀出后QString::fromUtf8()。不要信“Windows控制臺(tái)能顯示中文就是對(duì)的”socket沒(méi)有編碼概念只有字節(jié)流誰(shuí)定義編碼誰(shuí)負(fù)責(zé)。5.5 服務(wù)器退出時(shí)崩潰現(xiàn)象關(guān)閉服務(wù)器控制臺(tái)程序有時(shí)直接報(bào)錯(cuò)或者卡住無(wú)法退出。原因客戶端連接還掛在clients容器里服務(wù)器直接退出時(shí)每個(gè)socket都還持有對(duì)象引用部分晚到的recv回調(diào)還在工作析構(gòu)順序錯(cuò)亂導(dǎo)致重復(fù)釋放。解決退出前統(tǒng)一關(guān)閉所有socket先斷開(kāi)有連接的客戶端再清理監(jiān)聽(tīng)socket。而且查找所有delete處確保每個(gè)網(wǎng)絡(luò)對(duì)象只有一個(gè)擁有者。最好在服務(wù)器退出流程里加一個(gè)標(biāo)志位讓循環(huán)正常跳出而不是強(qiáng)殺線程。6. 把優(yōu)秀成績(jī)拉開(kāi)差距可靠性驗(yàn)證與可擴(kuò)展接口6.1 用腳本把協(xié)議回歸測(cè)試做成自動(dòng)化課程設(shè)計(jì)說(shuō)出來(lái)不算數(shù)要有驗(yàn)證。我在這個(gè)資源包里最欣賞的部分是一組測(cè)試腳本起服務(wù)器后腳本啟動(dòng)兩個(gè)客戶端進(jìn)程預(yù)設(shè)好賬號(hào)、好友關(guān)系讓A給B連續(xù)發(fā)100條消息然后腳本檢查B收到的消息條數(shù)、順序和內(nèi)容是否一致。這個(gè)腳本不是UI自動(dòng)化而是走socket層面直接打協(xié)議包所以能非??彀l(fā)現(xiàn)問(wèn)題。# stress_test.py import socket import struct import time def build_packet(msg_type, payload): return struct.pack(IH, len(payload), msg_type) payload.encode(utf-8) client socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((127.0.0.1, 9999)) client.send(build_packet(1, {action:login,name:A,pwd:123456})) time.sleep(0.2) for i in range(100): client.send(build_packet(3, {to:B,content:msg-%d} % i)) client.close()這個(gè)協(xié)議格式剛好和C端一致IH對(duì)應(yīng)大端2字節(jié)類型加4字節(jié)長(zhǎng)度。為什么用腳本而不是在C里再寫一個(gè)測(cè)試客戶端因?yàn)槟_本改起來(lái)快壓測(cè)時(shí)不用重新編譯而且可以結(jié)合串行、并發(fā)多場(chǎng)景跑。我在之前做模擬項(xiàng)目X時(shí)就是靠這套腳本在答辯前抓到一個(gè)只在壓力下才出現(xiàn)的隱性半包問(wèn)題。從那以后我每次做網(wǎng)絡(luò)課程設(shè)計(jì)都會(huì)先寫一套回歸腳本再開(kāi)始寫業(yè)務(wù)代碼。6.2 預(yù)留擴(kuò)展點(diǎn)離線消息與文件傳輸如果你想讓成績(jī)?cè)偕弦粋€(gè)臺(tái)階可以重點(diǎn)看這個(gè)資源包的擴(kuò)展接口設(shè)計(jì)。服務(wù)器維護(hù)一個(gè)離線消息隊(duì)列客戶端登錄成功后服務(wù)器把隊(duì)列里的消息逐條推送過(guò)來(lái)客戶端按會(huì)話分組展示。這個(gè)邏輯本質(zhì)上是對(duì)消息路由層做一個(gè)小擴(kuò)展不需要改動(dòng)網(wǎng)絡(luò)核心。文件傳輸也做了預(yù)留文件分片后復(fù)用同一套協(xié)議格式只是類型字段變成了FILE_CHUNK負(fù)載里放了文件ID、分片序號(hào)和二進(jìn)制數(shù)據(jù)。底層收發(fā)不變只是負(fù)載大了些。這也是這個(gè)資源包的價(jià)值它不是一套只夠演示的基礎(chǔ)代碼而是留好了后續(xù)功能擴(kuò)展的空間。我記得某導(dǎo)師在答辯時(shí)說(shuō)了一句話課程設(shè)計(jì)不是看你會(huì)不會(huì)寫代碼是看你有沒(méi)有想過(guò)這個(gè)系統(tǒng)明天怎么加功能。這話很扎心但確實(shí)是驗(yàn)收時(shí)拉開(kāi)分差的關(guān)鍵點(diǎn)。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
av凤凰久久久| 婷婷综合久久| 久久激情亚洲精品无码?V| 制服乱伦| 男人干美女| 日韩精品电影| 欧美亚洲综合高清在线| 在线观看免费视频国产| 五月婷婷啪啪| 一区二区不卡免费| 亚洲一区在线观看欧洲| 99999国产精品| 国产超碰AV在线精品| 色综合久| 欧美一区二区| 国产一在线观看| 精品福利视频| 欧美色图20P| 五月婷婷丁香| 色婷婷日韩精品一区二区三区| 国产成人无码a| 偷拍亚洲高清图片| 玖玖综合网| 天天天天天干夜夜夜夜夜操| 人妻大香蕉| 久久五月丁香| 国产乱码久久久| 国产乱伦亚洲| 啊啊啊好大好湿| 欧洲亚洲国产综合在线| 日韩懂色网| 99久久亚洲精品无码毛片潘甜甜| 野狼激情网| 国产AV天美传媒一区二区三区 | 夜嗨影院| 97在线观看视频| 久久综合激情| 色妇91| 婷婷月色| 日日噜噜夜夜狠狠视频无| 精品999日本| 男人天堂久久精品不卡| 九九热免费国产视频婷婷伊人| 欧美同性恋 的搜索结果 - 91n| 日韩人妻中文视频| 97资源站国产精品| 欧美精品另类人妖xxxx| 国产色呦呦| 美女让帅哥通她小鸡鸡| 另类 日韩 熟女| 亚州综合色| 中文久久96| 一本一道vs波多野结衣| 国内一区二区免费| 日日AAvv| 亚洲,欧美,春色,另类| 狠日欧美| 欧美影音在线| 日韩中文字幕熟妇人妻| 在线亚洲 欧美 日本专区| 热热热热日日漂亮永久永久国产日| 九九热超碰| 北约熟女超碰| 东京热一区二区中文字幕| 精品女人999| 国产性爱在线视频一区二区| 人人妻人人澡人人爽人人精品浪潮 | 欧美亚洲国产自久久| 狠狠色色| 91丨九色丨43老版熟女| 天天色黄色影院天天操| A级国产欧美激情在线| 五月天婷婷社区| 91在线视频免费中出| 激情五月天色色| 91精品人妻电影| 97爱爱| 97jingpin| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 夜夜嗨免费视频| 亚洲欧美日韩国产丝袜自拍中文| 超碰日本97美女人妻人人玩人人爱| 3p国产欧美99热| 四虎影视永久在线免费| 日韩欧美传媒一区国产| 超碰99在线| 欧美日韩中国x| 大乔未久88一区| 久久精品人妻一区二区| 大香蕉伊然在亚洲91| 欧美色图在线视频少妇| 熟女高潮精品一区二区| 色原狠狠天天天| 人妻少妇精品视频一区二区三区| 日韩欧美中文字亚洲慕| 偷窥自拍亚洲色图| 熟女乱伦二区| 天天操综合网| 日韩av影片在线观看| 黄色人人| 亚洲啪啪视频一区二区| 欧美一区二区一级岛国大片| 丁香色狠狠色综合久久小说| 亚洲第一免费视频| 日本黄 R色 成 人网站| 伊人亚洲国产一成人久久精品,久久| 国产高清精品一区二区三区毛片 | 色婷婷淫色网| 日本不卡免费二区| 久久神马| 国产亚洲深夜激情| 亚洲男人久久综合天堂| 女人被添高潮免费视频| 亚洲成人久久美女| 久久大香蕉手机高清| 性色av一区二区| 国产有码一区| 蜜桃狠狠色伊人亚洲综合| 亚洲丝袜少妇在线| 国产AV中文| 蜜臀无码视频在线观看| 操国产逼| 五月婷婷丁香六月丁香| 国产 丝袜 欧美中文 另类| 欧美少妇性爱网站| 超碰狠狠操| 天天做日日爱夜夜爽| 久久国产999| 亚洲砖码砖专无区2023| 久久91视频| 亚洲啪啪啪啪视香蕉| 国产精品久久久午夜夜伦鲁鲁| 国产熟妇一区二区| 欧美狠狠操| 欧亚不卡| 日韩日韩日韩-国产乱码精品一区二区| 国产黄色剧情影片麻豆免费播放| 亚州操逼网| 蜜桃精久三区| 少妇高潮九九九九九九九| 亚洲AV成人精品网站在AV| 一区二区三区四区免费视频| 青青草吊丝| 午夜传煤十二区精品| 日韩人妻有码免费视频| 污啪啪啪视频| 91青青| 天天干人人乐| 少妇高潮特黄A片| 欧洲中文字幕| 日韩啪啪视频| 大香蕉久| 亚洲欧美综合网站| 看大黄色大片原件| 亚洲射综合网| 在线视频97| 五月婷婷六月激情| 精品国产乱码久久久影院| 国产精品女久久久久av爽| 免费农村成人少妇人妻Aa一区二区视频 | 青青11操操操操操操操操| 欧美人妻一区二区| A片 AV一级在线播放观看免费| 亚洲欧美九九九| 亚洲色图A| 国产精品一级片在线看| 久久久久久少妇| 亚洲欧美综合区自拍另类| 国产精品久久久777| 黄片视频观看| 欧美久久婷| 日韩少妇无码| 亚洲高清无码免费观看视频| www欧美91| 激情五月综合网| 亚洲黄色AV电影| 日韩人妻精品久久久久| 少妇淫妇久久久久久久| 色噜噜狠狠色综合日日| 国产精品第一页国产大屁股视频免费区| 91人妻人人澡人人爽人人精品| 性色一线| 粉嫩AV一区二区夜夜| 97av在线视频| 欧美综合91| 99色在线| 国产成人亚洲精品无| av天堂5| 久久久天美| 女人午夜视频777| 精品无av| 久久午夜伦| 蜜臀久久99精品久久久| 亚洲欧美中文日韩视频中国语| 青青草原成人| 欧美操人| 欧美色女人| 美美91成人国产精品欧美精品久久久久久久 | 亚洲国产高清福利视频| 久久一二三四五六七八九区| 欧美亚州手机在线| 91精品人妻偷情| 久久人妻少妇| 色婷婷基地| 97欧美综合| 嗯嗯嗯啊啊啊在线免费观看| 免费视频在线一区二区不卡| 欧美日韩美女精品久草一区二区三区| 日韩中文字幕二区| 久久精品| 超碰97资源网亚洲| 七久久久| 淫荡熟女乱伦网| 亚洲 欧美 第一页 | 波多野42部激情无码喷潮| www. 男人天堂成人在线| 日韩三级视频一区二区三区| 脫衣舞一区二区三区| 91国产丝袜白虎| 特级大荫道BBwBBwBBW| 中文字幕日本久久| 欧美懂色综合网| 国产女人9999| 久久九九一区二区三区成人| 亚洲操逼视频网站| 亚洲97在线观看| 1204av韩国| 九九九只有精品| 日本大香蕉| 操逼逼一区视频| 啊啊啊不要啊啊受不了了视频在线| 亚洲的天堂网| 久久久人体| 操逼大黄片| 葡萄牙性视频一二区| 日韩精品怡红院| 亚洲城人男人的天堂| 亚洲中文字幕av| 99久久精品无码一区二区| av影片在线观看不卡| 人妻少妇久久中文| 97视频www| 99热精品青草在线| 91蜜臀熟女| 色色五月天婷婷| 日韩激情中文字幕有码| 自拍偷拍亚洲熟女妇人精品 | 欧美婷婷| 影音先锋国产精品| 乱伦1色页| 久久久久免费看少妇A片特黄| 干B网| 日韩资源网| 国产品精品自在在线午夜免费 | 欧美激情综合| 中文人妻av高清一区| 中出人妻中文字幕91在线| 美女尤物福利视频| 午夜福利免费福利视频| 97爱| 国产美女高潮视频| 大香蕉啪啪啪啪在线| 午夜天堂啪啪| 亚洲AV操| www.99色| 天天干嫩逼网| 丝袜视频网国产90| 操逼内射干逼白丝91| 大香蕉五月天| 人妻中文字幕精品无码 | 偷拍 欧美 日韩| 欧美日韩小说| 东京热熟女亚洲视频网站| 猛交交| 国产网站在线播放| 中文字幕第9页萱萱影音先锋| 玖玖爱伊人玖玖爱| 亚洲高清视频在线观看| 日本免费中文一区二区三区四区| 久久激情亚洲精品无码?V| 国产一国产一级毛片古装| 91天堂丝袜美腿| 91中文精品日韩欧美在线| 久久国产在线一区二区| 亚洲天堂2020| 亚洲天堂一二| 夜夜爽爽夜夜精品视频| 96精品久久久久中文字幕| 色色婷| 秋霞蝌科网日本一区| 国产精品一区二区a| 午夜操一视频一区| 久久久草草精品| 亚洲 另类 丝袜 自拍 动漫| 91电影色诱| 女同在线视频一区| 九九热视频在线观看| 十八禁的黄污污免费网站| 2018天天日天天日| 国产无码成人无码| 综合 亚洲 欧美| 久啪视频| 久久青娱乐| 97精品在线| 久久久久ab| 久久不卡一区二区| 男人的天堂激情| 嗯啊不要在线| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 无码黑人精品一区二区三区三| 天天草天天日| 1769成人国产精品视频| yaouchengrenav| 91东北熟女| 美女诱惑久久| 97爱爱爱| aV中亚| 97综合在线| 亚洲日韩天堂| 97在线视频免费| 好爽视频在线观看| 极品肉射| 日本久久女同性恋视频| 丰满人妻aA一区二区三区| 青草精品视频-日本久久久久网站| 国产国产亚洲一二三久久| 插B在线观看| 97精品视频在线播放| 亚洲欧美日韩中文久久自慰| 97在线欧| 亚洲欧美综合网| 五月天久久人妻| 四虎av在线| 粉嫩AV一区二区夜夜| 激情综合 婷婷五月 红杏| 夜夜夜爽www精品视频| 国产sv美女内射| 久久欧美激情| 欧美激情综合网| 久久精品| 日本操逼aaaaa| 日韩人妻有码免费视频| 最新的亚洲无吗| 亚洲综合精品国产一区| 91狠狠综合久久久| 青青草原人妻| 超碰97久久观看| 97精品中文字幕| 欧美洲精品一级| 精品女同一区二区三区| 男人在线天堂| 17c在线成人免费A片观看| 精品人妻一区二区视频| 亚洲一区二区中文字幕| 婷婷久热| 欧美激情亚洲色图| 天天影视色香色欲| 丝袜综合| 欧美色道啊| 97se亚洲综合自| 91精品国产91综合久久蜜臀| 激情抓乳插进去啪啪啪日韩| 亚洲九月丁香| 黄页18禁| 噜噜噜亚洲精品| 天天影视综合色| 97操| 在线视频免费播放一区| 97福利视频| Av色五月| 欧亚揄拍偷拍精品视频| 亚洲色交| 青草草免费网站av| 激情久久av一区av二区av| 97超碰jingpin| 国产视频大全| 亚洲熟女人妻中文字幕一区二区| 成人免费看吃奶视频网站| 日本色色的视频| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 欧美91变态| 中文字幕日韩专区精品系列| 国产亚洲精品美女久久久m| 五月天激情小说| 久草精品国产蜜臀 | 亚洲淫乱骚妇AV| 乱色老一区二区三区的观看方式| 蜜桃久久一区二区| 久久东京伊人一本到鬼色| 天天干天天插| 久噜噜| 人妻精品一区二区三区| 亚洲色图尤物视频| A久久| 色香在线| 97视频在线看| 操比国产| 91久久18禁| 嗯嗯嗯啊啊在线观看| 乱伦日本中文自拍| 巨爆乳肉感一区二区三区竹菊影视| 精品一区96| 不卡六六在线91| 韩美日操逼| 99re久久| 东京热不卡视频| 大色综合| 99视频精品| 亚洲国内精品成人不卡| 91在线免费精品视频| 午夜福利视频在线一区| 日韩精品99久久久久久中文字幕| 亚州色综合| 亚洲色图亚洲无码强奸乱伦| 一区二区 电影 亚洲| 91网站18禁| www欧美性爱| 国产精品。| 国产精品视屏| 欧美国产日韩清纯唯美| 干b网| 中国一级操逼视频| 男人天堂站| 怡红院成人视频| 福利色色| 国产精品丝袜久久亚洲不卡| 内射夫妻三片| 98一区二区精品| 天天影视综合色| 999亚洲国产视频| 国内毛片免费h片在线| 97精品综合久久网| 国产精品人妻一区二区| 特污免视频| 桑老女人九区| 肉嘟嘟www视频在线观看高清| 亚州乱码中文字幕综合久久久| 91精品人妻一区二区三区蜜桃| 日本国产欧美高清在线| 成熟熟女国产精品一区二区| 欧美综合国产精品久久丁香| 色性荡荡荡荡视频| 性综合网| 另类图片五月| 亚洲综合九九| oumeisetu综合| 中文字幕AV中出| 蜜乳av首页| 久久久久幕乱码| 精品久久久久久中文| 久久最新视频免费观看| 大二网站亚洲| 九月AV| 88xx成人精品视频| 亚洲限制级在线| 午夜啪| 麻豆久久久久久久久丝袜| 日韩欧美加勒比| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲一区中文字幕一区| 国产精品一二三| 国语对白在线播放视频| 中文字幕二区| 这里都是精品在线观看| 亚洲图片 欧美电影| 成人午夜无码视频| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 丁香啪啪| 日韩精品-原创伙伴| 91美女中出| 久艹日日日| 伊人综合色网| 欧美一级黄色免费专区| 国产精品网站www| 欧美1区二区三区公司| 91真人天天在线| av在线一区二区三区| 超碰在97| 亚洲国产无码精品首页久久久| 亚洲九九视频| 又黄又爽在线观看视频| 久久超碰国产一区二区三区| 一牛一区二区三区久久| 亚洲AV无码AV吞精久久久久 | 伊人久操| 亚洲欧美洲综合| 91人妻人人妻| 久久精品国产亚洲妲己影视| 大香蕉琪琪日本女优不卡| 91天堂色男人的天堂| 欧美97se| 亚洲人成色9999精品久久| 黄色无码高清黄色无码网站| 欧美国产一区二区三区麻豆传媒| 91社区拍啪人妻| 国产熟码AV| 亚洲欧美大香蕉| 91免费看一区二区三区| 久干网| 激情久久av一区av二区av| 大香蕉日韩| av操操不卡| 久久美女国产| 亚洲小说视频| 久久精品72| 日韩丝袜二区| 久久男人天堂| 96久久久精品| 亚洲婷婷五月天| 亚洲一区中文精品| 久久久久久裸体 | 精品久久久久久久| 九九拍拍精品视频在线播放 | 中文字幕av一区二区三区人妻少妇| 91丝袜美女国产| 久久久久久亚洲Av无码精| 亚洲精品白丝| 国产黄a三级三级三级av在线看| 欧美黄色片在线播放| 欧美精品欧美精品系列 | 欧洲精品一级二级精品综合视频综合| 美骚妇av高清在线| 一起草av| 99这里只有精品国产| 日日骚av| 操操操操操操| 成人午夜无码视频| 九九热久久99精品re| 67914在线兔费成人视频| 少妇毛片久久| 巨爆乳肉感一区二区三区竹菊影视 | 日韩三级伊人| 久久久九| 婷婷色网| 日本福利社| 探花一区二区三| 欧美性夜| 亚州高清av| 九九热免费国产视频婷婷伊人五月 | 午夜精品久久久| 欧美青青草视频| 操人妻丝袜高跟| 国产亚洲色婷婷久久99精品91葵花宝典 | 久操在97| 久久免费老司机精品| 黄色网址在线免费观看| 青青操网| 春色综合网| 国产乱子伦一区二区三区免看| 亚洲性综合9| 欧美特大黄一级片片免费| 国产无马在线| 亚洲在线91| 久欲AV| 久久、1234| 国产11页| 看一级黄色视频| ..日韩av毛片精品久久久| 亚洲天堂精品日韩电影| 久草精品在线| 成人精品水蜜桃久久久久久久| 啊啊啊好湿久久| 日韩人妻少妇 一区二区三区| 久久毛卡| WWW啪啪的com| 欧洲黄色网| 东京热大香蕉| 国语精品av| 亚洲大色鬼| 激情综合av| 伊人97色天使| 天综合网| 91欧美| 日本午夜福利影院| 操逼逼福利视频| 成人性爱av| 色欲天天婬色婬香WWW夜色| 免费视频97| 大逼色网站| 青青草华人在线欧美在线| 国产精品久久久999| 91成人在线| av在线浏览| 啊啊啊啊啊啊在线看| 先锋精品av色鲁| 国产伦精品一区二区三区在线观 | 国产亚洲99久久精品| 亚洲成人久久美女| 亚洲精品精品一区二区| 一区二区三区 日韩欧美| 精品中文字幕一区二区| 1级黄色夫妻对换性交免费看| 翔田千里AV无码秘 三区| 酒色综合网| 精品人妻一区二区三区视频在线| 国产精品一区在线播放| 亚洲少妇综合| 97伦综合| 91精品网站| 成人性交午夜免费片| 亚洲精品熟妇1区2区3区。| 熟妇女伦乱视频视频| 亚洲久草AV色图| 天天干夜夜操一区二区| 亚洲天天天| 天美传媒麻豆一区二区三区国产精| 欧洲站一级二级三级h| yazhouzaixian| 欧美手机在线综合| 欧美高清91| 欧美性夜| 亚洲欧美日韩偷拍色图| av毛片aaaaa免费看| 日本在线观看网址| 日韩熟女操逼| www.伪伪| 成人性爱全视频观看| 性爱1区| 亚洲人妻av| 久久亚洲不卡| 日韩中文字幕熟妇人妻| 欧美视频第二页| 色婷婷淫色网| 欧美人妻一区二区| 97在线视频网站| 亚洲啪啪综合?v一区综合精品区| 国语对白露脸XXXXXX| 亚洲天天做日日做天天谢日日| 婷婷丁香九月| 黄片不用下载在线观看| 开心激情站| 美国美女AV在线| 欧美另类自拍| 久热99999| 日本大香蕉综合网| 欧美 精品国产制服第一页| av无线看| 婷婷五月天久久久| 美女露胸露尿口| 亚洲自拍欧美国产首页网曝| 午夜精品久久久久久久| 97欧美日韩综合| 日本久久女同性恋视频| 久久一区二区高清免费| 日本色婷婷| 老熟女91av| 亚洲污污网站| 欧美日韩久久精品爱爱| 超碰免费人妻人人| 免费强奸av| 精品丰满人妻一区二区三区免费观| 一个人在线看的黄色电影网站| 黑人精品久久97| 色偷偷2020免费视频播放| 69麻豆天美| 国产精品亚洲高清在线| 久久性视频| 蜜桃中文字日产乱幕4区| 日本一久是| 久久东京热久久| 正在播放国产精品一区| 大香蕉丝袜一级片| 无码人妻丰满熟妇奶水区毛片| 九99久久| 久久AV无码AV| 久久高清欧美国产| 久妇网| 日本天天干天天日一区| 亚洲综合91| aaaa黄片| 殴美综合色88| 999久久久久久久久| 97超碰人人模人人拍人人| 国产一级作爱毛片| 日本三级小说中文字幕| 久草成人影片| 视频一区二区三区精品| 超碰九色| 国产白领连续中出在线播放| 久久久久久久| 秋霞无码av鲁丝片一区| 欧美日韩情色一区二区| 日韩欧美天堂| 操人人| 欧美躁死她一区二区| 久偷拍欧美日韩三区| 99精品人妻| 青草青草久热| 99re不伦| 91丝袜在线播放| 欧美日本国产日韩激情视频| 麻豆国产av网| 97视频播放| 自拍偷拍 高清无码| 69人妻人人揉人人躁人人精品| 99re在线视频这里只有精品| 十八禁视频一区二区| 成人看片网站| 老鸭窝日丰县女人| 亚洲国产精品99久久久| 欧美久久九九| 色狠狠一区二区三区香蕉| 国产精品熟女九色九色蜜臀| 日韩国产品视频中文字| 亚洲图片 欧美电影| www.大香| 久久天天躁日日躁狠狠躁| 97超碰香蕉| 丁香五月激情综合国产| 91欧美性| 欧美日韩黄片精品在线| 美女露胸露屁股| 超碰97伊人| 蜜乳AV色欲AVAV无码| 天天日天天操VV| av一区二区三区不卡| 欧美精品四区| 人妻熟女一区二区在线视频| 大香蕉一线视频| 久热久操| 秋霞操逼片| 800zy一区二区| 青青草中文字幕| 91丨九色丨东北熟女| 久热99999| 欧美亚洲| 久久精品人妻一区二区| 国产日韩欧美中文在线播放| n1038 一二三区| 日本不卡一区| 欧插网站| 亚洲色图欧美色图另类图片| 欧美一级三级| 97超碰欧美精品| 五月婷婷性爱| 亚洲情色 自拍| 亚洲图片欧美在线视频| 亚洲欧美视| 小情侣高清国产在线视频| 试看60秒| 色哟哟511老熟女| 久久久久9999精品九九九| 在线岛| 激情视频一二三| 性色生活片久久毛片婬片免费放女人一级毛片 | 亚洲不卡av在线| 欧美极品美女aaaaaa级黄片| 色呦呦、国产精品| 一级黄色性爱裸体视频| 人妻插插人妻人| 家庭乱伦国产精品| 自拍视频大全亚洲专媒视频/一区二区三区| 国内偷拍精品一区二区| 日日干日日操五月天伦理视频| 乱伦熟女论坛| 亚洲高清视频在线观看| 被男人吃奶很爽的毛片| 丰满精品人妻少妇久久字幕| 又粗又长又爽在线观看| 都市激情人妻一区二区青青操视频| 亚洲精品三区在线观看| 夜夜 中文视频rt| 国产区91柔拿会所技师| 啊啊啊啊在线播放| 午夜丁香| 91视频在线观看18| 男人的天堂成人的社区| 亚川综合视频| 999熟女精品| 久久99亚洲精品久久99果| 91 偷| 大稥蕉免费视频这里只有精品| 国产色图乱伦| 99www.bibizy香蕉资源国产一区二区三区高清| 亚洲精品国产日韩无码AV永久免| 新97国产超碰| 福利色色| 亚洲欧美伦综合| 日本三级小说中文字幕| 一级特黄aaa大片在线观看成人一级片在线观看 | 五月色丁香| 日韩三级伊人| 大香蕉男人的天堂| 精品区国产区一区二区三区| 精品少妇99| 91老司机在线视频免费观看| 国产精品原创巨作?v网站| 是还免费视频1727我| 女人被添高潮免费视频| 啊啊啊啊网站| 欧美78| 日韩午夜啪啪视频| 秋霞色色影院| 狠狠躁日日躁夜夜躁A| 久久激情五月| 明星性猛交ⅹxxx乱大交| 亚洲老司机123专区| 超碰在线国产| 蜜臀一区二区三区在线 | 欧美激情内射| 蜜桃视频精品一区二区三区| 伊人五月天激情| 97超碰超| 国产25页| 日本三级大片| 免费av在线播放二区| 日日日日做夜夜夜夜做无码97| 丁香六月婷婷久久综合| 国产亚洲精品A在线观看下载| 天堂精品| 热天堂一区二区| 免费作爱一级视频| 亚洲91网| 美女丝袜激情小说| 日本曲间由美性生活片| 色官网色综合| 亚洲综合首页| 91亚洲丝袜| 亚洲国产精品乱码在线观看| 成人八戒网站| 精品九九| 加勒比久久av| 男人天堂站| 国产精品熟女丝袜一区二区| 国产免费黄色一级大片| 欧美手机在线综合| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 久久久久久波多野吉衣高潮| 任你草| 欧美成人A天堂片在线观看| juliaann欧美丝袜办公室| 亚洲AV不卡在线观看尤物| 色99在线| 亚洲乱伦图片视频| 欧美色狠| av橘色网站| 久久久不卡区一区二区三区久久久| 99啪啪| 韩国午夜理伦三级好看| 人人搞人人插人人操| 久超碰这里只有精品| 丝袜综合| 日本91白丝| 大伊香蕉在线视频免费| 92性色国产午夜福利在线661| 东京热毛片调教| 精品二999| 无码一区二区三区四区五区六区七区八区九区十区视频 | 性爱AV天堂| 中文字幕国产精品1区| 新版天堂中文资源8在线| 国产高清吃奶免费视频网站| 99热在线播放| 亚洲精品蜜桃久久久| 97超碰免费人人性爱| 97香焦色区| 99天堂网| 牛牛aV| 污污汅18禁网站在线永久免费观看 | 天天躁日日躁AAAXX| 韩日性爱av| 思思热在线视频免费| 久久久久久久9999| 热久久无毒不卡| 裸体美女久久久| 青青草十区九区爱夜| 久操九九九九| 五月丁香| 免费一级视频特黄色大片| 黄色电影观看久久9| 国产丝袜美女在线一区| 欧美夜夜| 久久久四区| 国产美女91| 欧美日韩97在线| 一二三四视频在线社区中文字幕| 色九月综合| 搡老女人老妇女老妇老熟女怎么读| 99色婷婷| 欧美日韩性爱精品| 日本在线视频导航| 丁香五月综合| 国产aⅴ无码片毛片一级网站| 91在线秘 男同| 国产亚洲色停停久久99精品91| 天天噜| 97色综合中文网| 亚洲Av诱惑| 国产精品白丝www| 97精品一区二区视频在线观看| 四虎精品一区| 亚洲怡春院| 日日日色色色色色| 欧美玖玖爱免费玖玖| 97超碰久| 欧美韩日精品资源| 亚洲91网站| 无码久| 亚洲欧美日产国产91毛片| 大香蕉在线免| 乱老熟女一区二区三区| 亚洲综合小视频小说在线观看 | 大香蕉乱级| 无码人妻精品一区二区三区99不卡| 国产精品午夜AV完会免费| 97香蕉网| 99婷婷一区二区| 国产精品黑人一区二区三区| 成 人 A V免费视频在线观看| aaa亚无码专区| 激情小说日韩无码| 97人人夜夜精品视频| 久久透逼视频| 人人艹亚洲| 人干人人人操人人摸| 91动漫操逼视频| 国产一级αv免费看片| 97啪啪| 欧美亚洲日韩人妻在线观看| 日韩欧美女优电影| 青青欧美在线| 91精品成人| 久草精品一区| 1204人成网站色www| 国产蜜臀精品一区二区尤物| 蜜臀99久| 亚洲色综合| 日韩熟女操逼| 日本一级婬片试看三分钟| 26uuu国产成人综合| 最新日产中文在线麻豆| 日本精品一区二区中文字幕| 超碰av在线| 啊啊啊啊啊啊啊国| 青青草五月天| 久操av在线| 亚洲欧美97√| 精品国产Av无码久久久伦古装| 国产无马在线| 亚洲无码免费看| 丁香婷婷九月| 综合网欧美在线| 又黄又粗又硬又长又大| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日本高清熟女久久一区| 一本大道久| 日本不卡五区| 亚洲国产一区二区日韩专区| 亚洲操逼无码| 2020视频1区2区3区| 好吊色一区| 曰韩少妇无码| 伊人九九九| 岛国黄片网站| 在线无码操| 天天舔天天 | julia国产在线 | 久草久热| 国产精品久久久久久久久久久久久久久久 | 少妇 综合| 亚洲第91页 | 九九综合| 久久蜜色情在线视频xxx免费观看| 69丨亚洲丨精品丨入口免费播放| 久久精品无码一区二区三区| 在线αⅴ| 粉嫩在线一区二区懂色| 天天影视综合网欧美精品| av一区二区三区四区五区久草臀| 亚洲日韩狠狠撸视频| 欧美成人一级麻豆| 亚洲精品第一| 欧美1727免费观看视频| 国内97干免费看| 一本久道久久综合狠狠爱一密臀精 | 亚洲成人av色网| 国产av热热色| 色九久| 18禁美女裸体无遮挡啪啪| 久久99操天天日| 亚洲 另类 丝袜 自拍 动漫| 91性网| 再深点灬舒服灬太大了添视频| 综合久久99| 天天色怡春院| 91综合熟女| 综合影视国产无码| www.操| 大香蕉手机在线| 亚洲AV秘无码一区..| 开心五月婷婷激情| 亚熟hd视频在线| 欧美亚洲图片| JIZZJIZZ国产精品喷水| 丰满少妇一区二区三区四区观看| 亚洲天天精品| 欧美性生活男人的天堂| 丁香五月久久| 黄色片G G G| 99久久国产精品免费高潮| 激情久久av一区av二区av| 97色论| 伊人九九九| 日本成人电影资源网| 日日天天久久啊啊aaa| 啊啊啊慢点| 色色香蕉| 欧美性区| 亚洲不雅视频1区二区| 操逼视频免费日韩无码| 安徽熟妇视频| 免费国产视频| 欧美成人性爱视频大全| 久久精9| 91老熟女| 久久草大香蕉| 国产99999久久精品| 久热精品在线国产| 一本一道人妻久久一区二区三区| 人妻少妇无码| 东北丰满熟女国产一区| 综合网~91综合网| …亚洲黄色厕厕女女在线播…| 偷窥自拍A片| 色www精品视频在线观看| 97无码视频在线播放| 密桃99999| 日本ZZ高免费A级视频| 看一级特黄a大一片| 天堂精品小草| 一二三区操逼国产91| 蜜桃臀av在线观看| 蜜桃传媒视频第一区入口在线看| 亚洲国产成人福利在线观看| av午夜玫瑰| 中文操逼字幕| 欧美|91色综合| 亚洲Av诱惑| 欧美精品999| 208天天久久九九九| 天天搞在线综合网| 天天插夜夜爽| 大香蕉视频一二三区| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 嗯啊不要啊在线 | 60秒免费小视频| 国产精品露脸在线观看| 69综合网| 国内精品嫩模A∨私拍小视频| 96AV精品| 亚洲国产综合图区中文字幕| 99精品视频在线观看| 96超碰网| 激情五月婷婷综合| 高精欧美色| 国产成人+综合亚洲+天堂| 99精品无码| 国产亚洲精品自在线亚洲情侣| 日本国产二线女色| 亚洲Av无码成人精品国产| 91 国产丝袜在线播放-百度| 最新中文字幕精品在线| 97就爱干| 亚洲国产高清福利视频| WWW美腿丝袜香蕉中文| 亚洲 国产 精品一区| 天天综合网合集91| 黄网色一区二区三区四区精品| 丝袜天堂网| 日韩AV熟女乱伦| 欧美啪啪天堂| 色九九综合| 国产熟女无套内射| 97天天爽| 欧美精品精品一区二区| 欧美午夜色妇色鬼| 国产一区二区三区免费视频在性观看| 美腿丝袜偷拍亚洲欧美| 91人妻精华帖| 爱妻综合网| 99热这里只有精品地址 | 波多野结衣之双飞调教在线播放| 91色综合激情| 啪啪视频亚洲第一| 亚洲伊人久久精品影院| 操逼视频免费日韩无码| av2014 日韩在线中文字幕| 超碰免费在线| 91处女在线观看| 大香蕉在线86| 在线免费观看日韩一区| 十八禁电影伊人网| 日本九九九九| 亚洲欧美人妻| 亚洲熟妇熟在线电影视频| 久久东京伊人一本到鬼色| 蜜臀久久99'精品久久久| 亚洲高清无码免费观看视频| 91爱啪| 亚熟在线| 芊芊操逼视频无码| 99热国产精品| 婷婷成人五月天| 亚洲中字幕日本一区二区三区| 久久內射| 欧美精品久久久久久久久88| 天天欲望网| 精品.99999| 人人操肉肉| 97超碰影音| 天天操av懂色| 亚洲一曲日韩精品| 久热精品在线| 热天堂一区二区| 韩日性爱av| 日本布卡一区二三区| 人妻日日夜夜精品| 久久五十路熟女人妻| 九九九不卡| 有码人妻系列| 最新中文字幕在线亚洲| 98久久超碰| 东北老女人的激情视频| 国模少妇一区二区三区| 香蕉99秘 一区精品蜜桃臀| 美腿丝袜偷拍亚洲欧美| 国产精品亚洲一区二区三区四区| 亚洲91网| 久久成人午夜狠狠| 国产av高清版| 亚洲欧美在线观看免费| 国产精品久久久久久久久久久久久久| 成人老鸭窝人人在线视频| 无码乱人伦中文视频| 97这里只有精品| 亚洲综合情色| 色欧美天天| 日本丝袜人妻内射| 亚洲欧美另类小说| 亚洲污污网站| 女同在线视频一区| 国产大学生口爆吞精合集| 91jk色拍| 亚洲欧美碰碰| 欧亚久久偷拍视频| 日本中文字幕在线视频| 国产一级高清免费观看| 欧美激色| 江都AV在线| 亚洲aV性爱| 伊人专区一区二区三区| 久久青娱乐| 激情亚洲天堂| 婷婷五月天成人网| 国产一区二区三区久久久精品| 青青草大香蕉视频| 欧美成人色| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 一级AAA片一区二区三区| 青青操在线亚洲视频观看欧美在线 |