99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

用 Electron 打造 UDP 數(shù)據(jù)報(bào)調(diào)試工具:主進(jìn)程與 dgram 模塊實(shí)戰(zhàn)解析

用 Electron 打造 UDP 數(shù)據(jù)報(bào)調(diào)試工具:主進(jìn)程與 dgram 模塊實(shí)戰(zhàn)解析 簡介這是一份基于Electron構(gòu)建的UDP調(diào)試工具源碼包面向需要在桌面端快速創(chuàng)建多個(gè)UDP客戶端和服務(wù)器的JavaScript開發(fā)者。工具支持任意主機(jī)與端口添加實(shí)例內(nèi)置隨機(jī)數(shù)據(jù)生成器可按固定時(shí)間間隔自動(dòng)發(fā)送數(shù)據(jù)報(bào)非常適合用于驗(yàn)證或測(cè)試自研UDP服務(wù)。包體共30個(gè)文件以12個(gè)JS腳本為核心配合5個(gè)CSS樣式文件、3個(gè)JSON配置和少量圖片資源總大小約301KB結(jié)構(gòu)簡潔便于直接閱讀與二次開發(fā)。資源已有1298人學(xué)習(xí)代碼中清晰劃分了客戶端管理、服務(wù)器管理、數(shù)據(jù)生成等模塊并附帶Electron打包配置可幫助你從開發(fā)到生成exe快速落地是學(xué)習(xí)Electron進(jìn)程通信與UDP網(wǎng)絡(luò)編程的實(shí)用參考。1. 為什么放著現(xiàn)成的網(wǎng)絡(luò)調(diào)試助手不用偏要自己寫一個(gè) UDP 收發(fā)工具如果你做過設(shè)備聯(lián)調(diào)或者協(xié)議對(duì)接大概率有過這樣的崩潰瞬間被測(cè)設(shè)備只支持 UDP文檔里寫著“向 192.168.1.64:9000 發(fā)送報(bào)文”結(jié)果你打開命令行用nc -u 192.168.1.64 9000發(fā)包終端里卻只能顯示 UTF-8 文本設(shè)備回給你一段十六進(jìn)制數(shù)據(jù)時(shí)屏幕上全是亂碼。再比如說你要驗(yàn)證本機(jī)某個(gè)端口有沒有 UDP 服務(wù)在監(jiān)聽Windows 下用netstat -ano只能看到端口狀態(tài)看不到內(nèi)容最后還是得開 Wireshark 抓包然后在幾十條背景廣播里找那一條關(guān)鍵報(bào)文。這種體驗(yàn)真的只適合偶爾用一次的人天天搞 UDP 聯(lián)調(diào)的話效率實(shí)在太低了。所以我花了一個(gè)晚上用 Electron 寫了一個(gè)極簡的 UDP 客戶端和服務(wù)器二合一工具也就是其實(shí)驗(yàn)項(xiàng)目中的核心結(jié)構(gòu)。目標(biāo)非常明確本機(jī)任意端口上能開一個(gè) UDP 服務(wù)器實(shí)時(shí)把收到的數(shù)據(jù)報(bào)顯示在界面上同時(shí)能向任意目標(biāo)主機(jī)和端口發(fā)送文本或十六進(jìn)制數(shù)據(jù)報(bào)收發(fā)記錄統(tǒng)一展示方便我觀察請(qǐng)求和響應(yīng)的對(duì)應(yīng)關(guān)系。不追求復(fù)雜功能能覆蓋日常調(diào)試需求的 80% 就夠了??赡苡腥藭?huì)問既然 VS Code 都是 Electron 寫的拿它來做這種輕量工具是不是太“重”了其實(shí)恰恰相反。Electron 非常適合這類工具型應(yīng)用原因有三個(gè)。第一跨平臺(tái)一致性好Windows、Linux、macOS 打包后都能跑不像某些老牌網(wǎng)絡(luò)調(diào)試助手只維護(hù) Windows 版。第二Node.js 原生自帶 dgram 模塊UDP 的服務(wù)器和客戶端加起來不到一百行代碼不需要引入任何第三方網(wǎng)絡(luò)庫。第三Electron 的主進(jìn)程和渲染進(jìn)程分離機(jī)制天然適合“網(wǎng)絡(luò)收發(fā)的邏輯放主進(jìn)程界面展示放渲染進(jìn)程”這種架構(gòu)練習(xí)價(jià)值很高。對(duì)于剛接觸 Electron 的人來說與其做那些純展示型的 Demo不如從 UDP 收發(fā)工具入手因?yàn)樗钦娴哪苡玫焦ぷ魃稀?. UDP 和 TCP 的本質(zhì)差別以及 Node dgram 模塊的工作邊界寫這個(gè)工具之前我覺得有必要把 UDP 的幾個(gè)關(guān)鍵概念重新捋一遍因?yàn)楹芏嗳嗽谠O(shè)計(jì)界面的時(shí)候會(huì)把 TCP 的那套理念生搬硬套過來結(jié)果做出一個(gè)“看起來能用、用起來別扭”的工具。2.1 “數(shù)據(jù)報(bào)”到底意味著什么標(biāo)題里刻意用了“數(shù)據(jù)報(bào)”而不是“數(shù)據(jù)包”這個(gè)詞不是裝腔作勢(shì)它準(zhǔn)確描述了 UDP 的行為。TCP 是流協(xié)議你調(diào)用 write 發(fā)送 1024 字節(jié)對(duì)端讀的時(shí)候可能拆成兩次返回也可能合并到一次里面邊界完全由內(nèi)核決定。UDP 則嚴(yán)格保留邊界你 send 出去的一個(gè) Buffer對(duì)端 message 事件里拿到的就是一個(gè)完整的、邊界一致的數(shù)據(jù)報(bào)。所以在界面設(shè)計(jì)上我采用“一行一個(gè)數(shù)據(jù)報(bào)”的展示方式每一行對(duì)應(yīng)一次接收或發(fā)送而不用像 TCP 調(diào)試工具那樣去做粘包拆包處理。另一個(gè)重要的區(qū)別是連接狀態(tài)。TCP 建立連接之前有三次握手之后維持連接狀態(tài)斷開時(shí)有四次揮手。UDP 沒有這些發(fā)送方只需要知道目標(biāo) IP 和端口就能把報(bào)文丟出去接收方被動(dòng)地接收。這也帶來一個(gè)實(shí)際影響UDP 工具里“服務(wù)器”和“客戶端”的界限并不像 TCP 那么清晰。TCP 里服務(wù)端必須 listen accept客戶端必須 connectUDP 里服務(wù)器只是 bind 到了本地端口而客戶端如果想接收響應(yīng)的報(bào)文也必須擁有一個(gè)本地端口來接收。我做的工具干脆把模式做成兩個(gè)獨(dú)立面板一個(gè)負(fù)責(zé)“監(jiān)聽”一個(gè)負(fù)責(zé)“發(fā)送”組合使用就能覆蓋絕大多數(shù)場(chǎng)景。2.2 dgram 模塊的核心 API 路徑Node.js 的 dgram 模塊已經(jīng)封裝好了 UDP 的全部操作核心邏輯并不復(fù)雜dgram.createSocket(type)創(chuàng)建 sockettype 傳udp4或udp6socket.bind(port, address)綁定本地端口綁定了才能接收?qǐng)?bào)文socket.send(buf, port, address, callback)發(fā)送報(bào)文socket.on(message, handler)接收?qǐng)?bào)文socket.on(error, handler)處理錯(cuò)誤這一步極容易被忽略socket.close()關(guān)閉 socket釋放端口。我用一個(gè)表格來對(duì)比 UDP 服務(wù)器和 UDP 客戶端在代碼上的實(shí)際差別行為UDP 服務(wù)器UDP 客戶端創(chuàng)建方式dgram.createSocket(udp4)相同是否必須 bind必須要接收外來的報(bào)文可選不 bind 也能發(fā)但收不到響應(yīng)調(diào)用 send可發(fā)服務(wù)器同樣具備發(fā)送能力主要行為接收 message必須監(jiān)聽只有 bind 了才能收到響應(yīng)典型場(chǎng)景被動(dòng)等待請(qǐng)求并回包主動(dòng)發(fā)起請(qǐng)求等待響應(yīng)理解這個(gè)表格之后工具的邏輯就清楚了監(jiān)聽面板相當(dāng)于一個(gè)常駐的 UDP 服務(wù)器發(fā)送面板則是一個(gè)用完即關(guān)的臨時(shí)客戶端。為了能收到響應(yīng)發(fā)送面板發(fā)送前會(huì)自動(dòng) bind 一個(gè)隨機(jī)本地端口這樣對(duì)端服務(wù)器回包時(shí)報(bào)文能回到這個(gè)工具本身。2.3 單 socket 還是多 socket 的設(shè)計(jì)取舍第一版我圖省事整個(gè)工具只維護(hù)了一個(gè)全局 socket。監(jiān)聽端口用它發(fā)送報(bào)文也用它??雌饋砉?jié)省資源實(shí)際用起來全是問題發(fā)送端每次都要切換目標(biāo)地址本地端口卻始終是同一個(gè)如果同時(shí)有多個(gè)服務(wù)端在跟你交互你根本分不清哪條報(bào)文是哪個(gè)服務(wù)端回的。更麻煩的是UDP 工具經(jīng)常需要在一個(gè)端口上長期監(jiān)聽同時(shí)又往另一個(gè)端口發(fā)包全局單 socket 會(huì)讓“監(jiān)聽”和“發(fā)送”這兩個(gè)動(dòng)作互相污染。所以最終設(shè)計(jì)是監(jiān)聽面板維護(hù)一個(gè)常駐服務(wù)器 socket由主進(jìn)程持有發(fā)送面板每次發(fā)送時(shí)臨時(shí)創(chuàng)建一個(gè)新 socketsend 成功之后立刻 close。雖然頻繁創(chuàng)建 socket 會(huì)帶來一點(diǎn)性能損耗但 UDP 本身是無連接的創(chuàng)建 socket 的開銷遠(yuǎn)小于 TCP完全感知不到差異。而且每次發(fā)送使用新的本地端口天然避免了多個(gè)服務(wù)端回包時(shí)端口混淆的問題。3. Electron 三層架構(gòu)怎么搭主進(jìn)程、preload、渲染進(jìn)程各管什么網(wǎng)絡(luò)收發(fā)必須放在主進(jìn)程原因有兩點(diǎn)。其一渲染進(jìn)程如果啟用了nodeIntegration: false理論上就不能直接 require(dgram)其二即使你為了省事在渲染進(jìn)程開 Node 集成一旦 socket 回調(diào)里拋異常整個(gè)渲染進(jìn)程都可能崩潰。正確的做法是主進(jìn)程持有網(wǎng)絡(luò) socket渲染進(jìn)程只負(fù)責(zé) UI兩邊通過 IPC 通信。這個(gè)分層也是 Electron 官方推薦的安全模型。3.1 項(xiàng)目初始化與 package.json我建了一個(gè)名為electron-udp的目錄初始化項(xiàng)目并安裝依賴mkdir electron-udp cd electron-udp npm init -y npm install --save-dev electronpackage.json 里唯一要改的關(guān)鍵字段是 main必須指向主進(jìn)程入口文件{ name: electron-udp, version: 1.0.0, description: A simple Electron app for UDP client/server datagram testing, main: main.js, scripts: { start: electron . }, devDependencies: { electron: ^28.0.0 } }這里有個(gè)很容易踩的坑npm 默認(rèn)的 main 字段是index.js如果你忘了改Electron 啟動(dòng)時(shí)會(huì)直接報(bào)Cannot find module index.js。第一次跑不起來基本都是這個(gè)原因。3.2 preload 里用 contextBridge 暴露安全的 IPC 接口Electron 的現(xiàn)代推薦做法是renderer 開啟contextIsolation: true、nodeIntegration: false然后通過 preload 腳本用contextBridge.exposeInMainWorld把有限的 API 暴露給頁面。這樣頁面里拿不到 Node 的全部能力只能調(diào)用我允許它調(diào)用的那幾個(gè)函數(shù)。preload.js 長這樣const { contextBridge, ipcRenderer } require(electron); contextBridge.exposeInMainWorld(udpApi, { startServer: (config) ipcRenderer.invoke(udp:start-server, config), stopServer: () ipcRenderer.invoke(udp:stop-server), sendDatagram: (config) ipcRenderer.invoke(udp:send, config), onServerMessage: (callback) { const handler (_event, payload) callback(payload); ipcRenderer.on(udp:server-message, handler); return () ipcRenderer.removeListener(udp:server-message, handler); } });這里用了ipcRenderer.invoke/ipcMain.handle這套異步 API比老的ipcRenderer.sendipcMain.on好用得多invoke 能直接拿到主進(jìn)程返回的 Promise 結(jié)果錯(cuò)誤也能通過 Promise rejection 拋回渲染進(jìn)程。需要注意onServerMessage返回了一個(gè)取消監(jiān)聽的函數(shù)這一步很多人會(huì)漏。如果頁面框架里有熱更新或者組件重新掛載的機(jī)制重復(fù)注冊(cè) listener 會(huì)導(dǎo)致消息被回調(diào)多次界面上出現(xiàn)一模一樣的好幾行記錄。做工具類應(yīng)用時(shí)寧可多寫兩行清理邏輯也不要留隱患。3.3 主進(jìn)程窗口創(chuàng)建main.js 里創(chuàng)建窗口的代碼是標(biāo)準(zhǔn)模板但 webPreferences 的配置有一處必須注意const { app, BrowserWindow, ipcMain } require(electron); const dgram require(dgram); const path require(path); let mainWindow; function createWindow() { mainWindow new BrowserWindow({ width: 1024, height: 720, webPreferences: { preload: path.join(__dirname, preload.js), contextIsolation: true, nodeIntegration: false } }); mainWindow.loadFile(index.html); } app.whenReady().then(() { createWindow(); registerUdpIpcHandlers(); }); app.on(window-all-closed, () { if (process.platform ! darwin) { app.quit(); } });preload 路徑必須用path.join(__dirname, preload.js)不能直接寫字符串preload.js。因?yàn)?Electron 在打包成 asar 后相對(duì)路徑的解析基準(zhǔn)會(huì)變直接寫裸文件名大概率找不到文件。這個(gè)問題在開發(fā)環(huán)境可能不會(huì)暴露一旦打包就出問題。4. 把數(shù)據(jù)報(bào)收發(fā)真正接進(jìn) Electron核心實(shí)現(xiàn)代碼拆解有了上面的骨架接下來就是把 UDP 邏輯填進(jìn)主進(jìn)程。我按照功能拆成三個(gè)部分服務(wù)器啟動(dòng)與關(guān)閉、客戶端發(fā)送、消息推送到界面。4.1 啟動(dòng) UDP 服務(wù)器監(jiān)聽核心思路同一個(gè)工具只允許一個(gè)常駐服務(wù)器 socket。如果用戶再次點(diǎn)擊“啟動(dòng)監(jiān)聽”我會(huì)先把舊 socket 關(guān)閉再創(chuàng)建新的避免出現(xiàn)端口不釋放導(dǎo)致下一次 bind 失敗。let udpServer null; ipcMain.handle(udp:start-server, async (event, config) { if (udpServer) { udpServer.close(); udpServer null; } const socket dgram.createSocket(config.family udp6 ? udp6 : udp4); socket.on(message, (data, rinfo) { sendToRenderer(udp:server-message, { type: receive, time: new Date().toLocaleTimeString(), from: ${rinfo.address}:${rinfo.port}, text: data.toString(config.encoding || utf8), hex: data.toString(hex), size: data.length }); }); socket.on(error, (err) { sendToRenderer(udp:server-message, { type: error, time: new Date().toLocaleTimeString(), text: socket error: ${err.message} }); }); await new Promise((resolve, reject) { socket.once(listening, resolve); socket.once(error, reject); socket.bind(config.port, config.host || 0.0.0.0); }); udpServer socket; return { ok: true, port: socket.address().port }; });注意promise里我同時(shí)監(jiān)聽了listening和error兩個(gè)一次性事件。如果端口被占用dgram 會(huì)觸發(fā)error事件而不是拋異常只有通過這個(gè) Promise 才能把錯(cuò)誤信息正確地返回給渲染進(jìn)程。剛開始寫的時(shí)候我沒做這個(gè)處理結(jié)果端口被占用時(shí)渲染進(jìn)程那邊毫無反應(yīng)主進(jìn)程控制臺(tái)卻悄悄打印了Error: listen EADDRINUSE排查了半天才發(fā)現(xiàn)是錯(cuò)誤沒被捕獲。4.2 發(fā)送 UDP 數(shù)據(jù)報(bào)發(fā)送的邏輯同樣放在主進(jìn)程渲染進(jìn)程只需要把目標(biāo) IP、端口、數(shù)據(jù)、編碼格式傳過來。ipcMain.handle(udp:send, async (event, config) { const socket dgram.createSocket(udp4); const buf config.hexMode ? Buffer.from(config.data.replace(/\s/g, ), hex) : Buffer.from(config.data, config.encoding || utf8); // 先綁定隨機(jī)端口這樣才能收到服務(wù)端的回復(fù) socket.bind(0, 0.0.0.0, () { socket.send(buf, config.remotePort, config.remoteHost, (err) { if (err) { sendToRenderer(udp:server-message, { type: error, time: new Date().toLocaleTimeString(), text: send error: ${err.message} }); } else { sendToRenderer(udp:server-message, { type: send, time: new Date().toLocaleTimeString(), to: ${config.remoteHost}:${config.remotePort}, text: config.data, hex: buf.toString(hex), size: buf.length }); } socket.close(); }); }); });之所以在發(fā)送前調(diào)用socket.bind(0)是因?yàn)槿绻?bind客戶端雖然能發(fā)出報(bào)文但本地端口是內(nèi)核臨時(shí)分配的而且這個(gè) socket 無法收到對(duì)端回復(fù)。bind 到 0 表示讓內(nèi)核分配一個(gè)空閑的臨時(shí)端口這樣當(dāng)接收端回包時(shí)報(bào)文能正確地回到這個(gè) socket。很多新手寫的 UDP 客戶端“發(fā)是發(fā)出去了響應(yīng)收不到”問題就出在這個(gè)細(xì)節(jié)上。十六進(jìn)制模式下的處理也提一下用戶輸入的01 02 ab之類的內(nèi)容我先用正則去掉所有空白字符再交給Buffer.from(str, hex)解析。如果不先清理空白01 02這種帶空格的輸入會(huì)直接解析失敗拋出的異常會(huì)讓整個(gè) IPC 調(diào)用返回一個(gè)奇怪的錯(cuò)誤對(duì)象界面上根本看不懂。4.3 把數(shù)據(jù)實(shí)時(shí)推送到界面主進(jìn)程向渲染進(jìn)程推送數(shù)據(jù)只有一個(gè)關(guān)鍵方法webContents.send。我在 main.js 里統(tǒng)一封裝了一個(gè)函數(shù)function sendToRenderer(channel, payload) { if (mainWindow !mainWindow.isDestroyed()) { mainWindow.webContents.send(channel, payload); } }加了isDestroyed()判斷的原因是如果用戶已經(jīng)關(guān)閉了窗口但 UDP 服務(wù)器還在后臺(tái)跑著Electron 默認(rèn)關(guān)閉窗口不會(huì)自動(dòng)退出整個(gè)進(jìn)程尤其 macOS 上這種行為更明顯這時(shí)候調(diào)用webContents.send會(huì)報(bào)一個(gè)Object has been destroyed的錯(cuò)誤。這個(gè)錯(cuò)誤不算致命但會(huì)污染主進(jìn)程的異常日志讓人誤以為程序崩了。渲染進(jìn)程收到消息后直接往記錄列表里追加一行即可。這里我用了一個(gè)非常簡單的方式把type為receive的條目靠左顯示且文字標(biāo)綠send的條目靠右顯示且文字標(biāo)藍(lán)error的條目用紅色顯示。視覺上掃一眼就能區(qū)分收發(fā)。5. 實(shí)測(cè)階段踩過的坑端口占用、防火墻、編碼、以及 socket 生命周期代碼寫完后我進(jìn)行了三輪實(shí)測(cè)本機(jī)回環(huán)收發(fā)、Windows 與 Linux 雙機(jī)通信、十六進(jìn)制數(shù)據(jù)收發(fā)。踩了四個(gè)比較有代表性的坑全部記錄下來這些都是純看文檔學(xué)不到的經(jīng)驗(yàn)。5.1 端口占用事件必須顯式捕獲這個(gè)問題我在 4.1 節(jié)已經(jīng)提過一次但值得專門展開。很多人寫 Node dgram監(jiān)聽listening和message事件就夠了因?yàn)檎A鞒趟鼈円欢〞?huì)觸發(fā)??梢坏┒丝诒黄渌绦蛘加胐gram 不會(huì)像 HTTP 服務(wù)那樣拋出同步異常而是觸發(fā)error事件。如果這個(gè)事件沒有監(jiān)聽器Node 會(huì)把錯(cuò)誤當(dāng)成未捕獲異常直接拋出表現(xiàn)就是你的 Electron 應(yīng)用瞬間退出完全沒有提示。我的建議是每個(gè) dgram socket 創(chuàng)建出來之后立刻掛一個(gè)完整的 error 監(jiān)聽器并且在里面把錯(cuò)誤信息推送到界面。這樣用戶才知道“端口被占用”或者“權(quán)限不足”而不是一頭霧水地看著應(yīng)用閃退。另外bind操作放在一個(gè) Promise 里同時(shí)監(jiān)聽listening和error能更干凈地把錯(cuò)誤帶回調(diào)用方。5.2 Windows 防火墻對(duì) UDP 入站報(bào)文的靜默攔截本地回環(huán)測(cè)試一切順利我以為大功告成結(jié)果拿到另一臺(tái) Windows 電腦上一跑發(fā)現(xiàn)局域網(wǎng)內(nèi)其他設(shè)備發(fā)送到這臺(tái)機(jī)器的 UDP 報(bào)文工具完全收不到。一開始我還懷疑是自己代碼的問題甚至用 Wireshark 抓包確認(rèn)了報(bào)文確實(shí)到達(dá)了網(wǎng)卡。排查到最后才發(fā)現(xiàn)Windows 防火墻默認(rèn)阻止 UDP 入站連接而且這個(gè)阻止是靜默丟包不像 TCP 那樣會(huì)返回拒絕連接的錯(cuò)誤。第一次啟動(dòng)應(yīng)用時(shí)系統(tǒng)彈出的防火墻授權(quán)對(duì)話框被我不小心點(diǎn)了“取消”往后就再也不彈了。解決辦法是到“Windows 安全中心 → 防火墻和網(wǎng)絡(luò)保護(hù) → 允許應(yīng)用通過防火墻”把你打包后的 exe 或者開發(fā)模式下的 electron.exe 勾上專用網(wǎng)絡(luò)和公用網(wǎng)絡(luò)的權(quán)限。結(jié)合這一點(diǎn)我在工具里給了一個(gè)很實(shí)用的設(shè)計(jì)收發(fā)記錄區(qū)域上方增加一個(gè)“網(wǎng)卡提示”如果用戶填的監(jiān)聽地址是0.0.0.0而接收不到外部報(bào)文時(shí)順手把防火墻排查建議寫出來。這個(gè)提示才幾行字但實(shí)際使用中能幫團(tuán)隊(duì)省掉非常多排查時(shí)間。5.3 文本編碼與十六進(jìn)制顯示的取舍UDP 調(diào)試中經(jīng)常遇到一個(gè)問題對(duì)方發(fā)來的是 GBK 編碼的文本或者干脆是不可打印的二進(jìn)制。我在設(shè)計(jì)數(shù)據(jù)展示區(qū)時(shí)同時(shí)保留了兩列內(nèi)容——原文和 Hex。原文直接用Buffer.toString(utf8)哪怕轉(zhuǎn)出來是一堆亂碼也無所謂因?yàn)榕赃呌惺M(jìn)制可以對(duì)照。發(fā)送側(cè)的處理則更關(guān)鍵如果用戶選擇“十六進(jìn)制發(fā)送”程序必須以hex模式解析輸入如果選擇“文本發(fā)送”就用配置文件里指定的編碼方式默認(rèn) UTF-8解析。這個(gè)選項(xiàng)必須顯式暴露在界面上不能自動(dòng)判斷。因?yàn)?1 02這個(gè)字符串你沒法可靠區(qū)分它是十六進(jìn)制數(shù)據(jù)描述還是純文本內(nèi)容。很多 UDP 調(diào)試工具在這個(gè)問題上做得非常反人類要么強(qiáng)制十六進(jìn)制要么強(qiáng)制文本我的做法是提供一個(gè)下拉框讓用戶自己選默認(rèn)文本模式更符合日常使用習(xí)慣。5.4 socket 關(guān)閉時(shí)機(jī)發(fā)送后立刻 close 會(huì)丟響應(yīng)嗎這是一個(gè)我原來擔(dān)心的點(diǎn)客戶端發(fā)送后立刻調(diào)用socket.close()這時(shí)候服務(wù)端的響應(yīng)報(bào)文還沒回來關(guān)閉 socket 會(huì)不會(huì)導(dǎo)致響應(yīng)收不到實(shí)測(cè)發(fā)現(xiàn)UDP socket 的close()會(huì)立即釋放本地端口之后到達(dá)的報(bào)文不會(huì)再被這個(gè) socket 接收內(nèi)核會(huì)直接回復(fù)一個(gè) ICMP Port Unreachable 給對(duì)端。所以嚴(yán)格來說“發(fā)送后立刻關(guān)閉就收不到響應(yīng)”這個(gè)擔(dān)心是成立的。但在我的設(shè)計(jì)里發(fā)送 socket 和監(jiān)聽 socket 是分開的工具里的“監(jiān)聽”面板負(fù)責(zé)接收響應(yīng)發(fā)送面板只是單純的發(fā)送動(dòng)作它不需要等響應(yīng)。也就是說發(fā)送 socket 關(guān)閉后如果有響應(yīng)報(bào)文回來會(huì)進(jìn)入監(jiān)聽面板那個(gè)常駐 socket 里前提是監(jiān)聽端口和發(fā)送 socket 綁定的隨機(jī)端口不是同一個(gè)顯然不是。如果你的使用場(chǎng)景是“既要發(fā)送又要接收對(duì)端回復(fù)”建議不要用每次新建 socket 的方式而是把發(fā)送和接收合并到一個(gè)常駐 socket 上。但對(duì)我來說監(jiān)聽面板就是干這個(gè)活的分開反而更清晰。6. 真實(shí)使用場(chǎng)景驗(yàn)證以及這個(gè)工具怎么擴(kuò)展成團(tuán)隊(duì)內(nèi)部的標(biāo)準(zhǔn)調(diào)試?yán)鞴ぞ咦鐾曛笪伊⒖逃盟?yàn)證了一個(gè)實(shí)際場(chǎng)景測(cè)試一臺(tái) NTP 時(shí)間服務(wù)器的響應(yīng)。NTP 協(xié)議走 UDP 123 端口報(bào)文格式是 48 字節(jié)的固定結(jié)構(gòu)。我在“發(fā)送”面板里用十六進(jìn)制模式手動(dòng)構(gòu)造了一個(gè)標(biāo)準(zhǔn)的 NTP 請(qǐng)求報(bào)文填入目標(biāo)服務(wù)器的 IP 和端口同時(shí)在“監(jiān)聽”面板綁定本機(jī)一個(gè)端口然后把 NTP 請(qǐng)求的源端口也指向這個(gè)監(jiān)聽端口。點(diǎn)擊發(fā)送后不到一秒鐘監(jiān)聽面板就收到一條 48 字節(jié)的響應(yīng)報(bào)文Hex 欄里能看到完整的時(shí)間戳字段。整個(gè)過程不需要 Wireshark不需要命令行界面上一目了然調(diào)試效率提升非常明顯。類似地我還測(cè)試過 GB28181 國標(biāo)設(shè)備在非標(biāo)準(zhǔn)端口上的 UDP 信令交互。對(duì)方文檔里只說“設(shè)備會(huì)上報(bào)心跳報(bào)文到中心服務(wù)器的 5060 端口”但實(shí)際上設(shè)備配置文件里還有好幾個(gè)備用端口用這個(gè)工具逐個(gè)監(jiān)聽這些端口很快就能確認(rèn)設(shè)備到底從哪個(gè)端口發(fā)數(shù)據(jù)。這種“廣撒網(wǎng)監(jiān)聽多個(gè)端口”的訴求Wireshark 能做但不直觀命令行 nc 一次只能監(jiān)聽一個(gè)端口而這個(gè)工具只要把監(jiān)聽面板復(fù)制兩份就能同時(shí)盯住多個(gè)端口。最后說說擴(kuò)展方向。當(dāng)前版本只做到了“收發(fā)數(shù)據(jù)報(bào)”但其實(shí)還可以加入幾個(gè)高頻功能定時(shí)自動(dòng)發(fā)送固定間隔向目標(biāo)端口發(fā)送同一條報(bào)文用于壓力測(cè)試或者?;顖?chǎng)景相當(dāng)于一個(gè)迷你版的 iperf3 UDP 打流工具。會(huì)話串聯(lián)把同一個(gè)from地址的收發(fā)記錄折疊成一組方便觀察多輪交互的時(shí)序。保存為 pcap收到的數(shù)據(jù)報(bào)可以直接追加寫入 pcap 文件方便后續(xù)用 Wireshark 做深入分析省去同時(shí)開兩個(gè)工具的麻煩。我在實(shí)際使用中發(fā)現(xiàn)工具類應(yīng)用最重要的不是功能多而是“啟動(dòng)快、界面清晰、出問題時(shí)能立刻定位”。Electron 開發(fā)這類工具確實(shí)占內(nèi)存但勝在迭代快、跨平臺(tái)一致這也是我最終堅(jiān)持用它而不用原生 Qt 或者 Tkinter 的原因。如果你也經(jīng)常被 UDP 聯(lián)調(diào)折磨不妨照著這套架構(gòu)花一個(gè)晚上自己寫一個(gè)跑通之后你對(duì) Electron 主進(jìn)程和渲染進(jìn)程的協(xié)作方式理解會(huì)遠(yuǎn)比看一百篇教程來得深。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产44页| 综合网亚洲| 婷婷新网址| 五月天激情视频| 亚洲 综合中文| 国产黄色在线观看| 激情丁香五月| 丁香五月天啪啪| 日日懆天天懆| 激情丁香网| 五月天婷婷激情网| 丁香花五月天激情| 激情五月色婷婷| 婷婷五月天久草在线| www色色com| 9999热在线免费观看| 五月丁香综合激情| 色五月婷婷久久| 99热这里只有精品最新| 99人人操人人摸| 婷婷国产综合| 六月丁香激情综合网| 色婷婷丁香社综合| 欧美成人日韩| 日本操片| 天堂成人久久| 欧美啪啪9| 在线观看日韩12345区| 99亚州综合精品成人网| 97操操| 激情五月激情综合网| 婷婷丁香五月欧美人| 日韩一级片| 综合亚洲AV| 婷婷色影音天| www.婷婷五月.com| 亚洲成人网站在线| 婷婷五月激情欧美| 99这里只有精品视频免费| 91狠狠色丁香| 91精品丝袜久久久久久| 亚洲av另类在线观看| 97色干| 狼人婷婷久久| 久久机热/这里只有精品| 狠狠色成人影片| 午夜激情五月天| 思思热热久久| 天天爽综合网| 色婷婷日本| 99亚州综合精品成人网| 91肏| 开心激情婷婷| 强辱丰满人妻HD中文字幕| 噜噜在线| 欧美A级成人婬片免费看理论| 国外亚洲成AV人片在线观看| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | www.99热精品| www.91色| 人妻操操色| 五月天色在线| 伊人玖玖婷婷| 大香蕉520| 曰韩少妇内射免费播放| 色婷婷aV四虎| 色丁香久久| 久久se 综合网| 色狠狠色综合久久久绯色aⅴ影视| 国产av天堂| www.seqingwuyuetian| 综合av在线| 亚洲中文字幕翔田千里| 色色色地址| 丁香五月日韩| 丁香婷婷久久激情| 五月丁香六月色| 综合网激情| 1024操逼视频| www.日本91| 激情五月丁香五月| 国产内射婷婷| 色狠狠色综合久久久绯色AⅤ影视| 婷婷少妇激情| 天天做天天要天天爽| 日日撸日日操| 99在线精品观看99| 欧美性爱专区| 色九网| 丁香六月亚洲| 五月天婷婷綜合院| 激情婷婷丁香| 99热日韩| 色五月婷婷激情| 婷婷五月天激情网| 日本三级成人秘书精品片| 色婷婷丁香女女| 日本9区视频| 99亚洲精美视频在线观看| 五月丁香六月激情| 五月激情视频| 久久五月丁香| 色婷婷成人做爰A片免费看网站| 亚洲成人丁香花| 超碰色天堂| 永久无码色| 操一操| 99精品在线观看视频| 激情深爱五月天| 97碰 在线视频观看| 婷婷伊人综合中文字幕| 婷婷 月 丁香| 四川BBB搡BBB搡多人乱亂| 操b视频在线观看一区二区| 国产操碰| 丁香五月偷拍| www,setingting| 亚洲愉拍99热成人精品| 五月欧美丁香在线观看| 99久操视频| 人人操插| 狼友超碰| 色综合香蕉视频| 日本在线免费中文com.| 色色亚洲视频| 性爱网五月天| 色婷婷a v| 欧美三级巜人妻互换| 丁香五月激情棕合| 人人操av| 9 大屁股在线视频精品| 99久久综合精品五月天| 国产美女无遮挡裸体毛片A片| 丁香五月123| 五月激情综合激情五月| 五月香婷婷| 第四色五月婷婷| 一级A片天天操夜夜操| 九九精品99| 亚州第一黄网| 狠狠撸激情综合丁香五月天俺来啦| 五月天色丁香| 久久婷婷五月综合97色一本| 操操啪| 999精品久久久久久久| 五月天无码视屏播放| 日本啪啪天堂| 99在线免费视频| 欧美人妻一区二区| 免费看片在线观看| 可以看的av网站| 国产精品18久久久| 五月亭亭激情综合| 婷婷综合性爱网| VA国产在线综合网站| 综合久久久| 99日本视频| 色操b| 九九热最新| 婷婷五月天成人网| 激情婷婷五月天| 久久精品五月天| 夜夜躁爽日| 综合色图婷婷| 久热视频这里只有精品| www久久久久久| 精品久久66| AV网在线| 婷婷五月中文在线视频| 9视频1在线| 丁香六月情| 色婷婷丁香五月| 日本熟妇乱妇熟色A片蜜桃| 99热最新地址在线| 国产XXXX搡XXXXX搡麻豆| 久久成人性爱| 大香蕉色婷婷伊人在线| 久久丁香五月婷| 国产在线网址1| 天天狠狠色综合| 成人五月天综合网| 直接看的AV| 五月丁香婷婷综合网色欲| 综合激情深爱| 丁香五月婷婷亚洲色图| 丁香色五月天| 米奇影视资源777狠狠色婷婷五月天激情网 | 亚洲精品午夜国产va久久成人| 婷婷五月天综合亚洲| 激情综合网激情五月网| 人人操婷婷| 色五月激情| 婷婷五月丁香综合桃花色网| 色五月婷婷综合| 亚洲综合婷婷| 国产精品第一国产精品| 五月天婷婷在线AN| 五月婷视频久久| 久久精彩视频| 操射国产日本| 欧美色色色色色| 婷婷爱五月天| 99热在线成人网站| 丁香婷婷啪啪| 五月天丁香婷婷久久九| 人妻久热| 国产五月婷| 99视频在线9| 婷婷五月情| 大香蕉天堂| 五月天婷婷影院| 青青草视频福利| 色色色色色色色色色色色色色五月天| 色婷婷影院| 婷婷久久免费看| 99热九九九九| 婷婷在线精品| 婷婷俺去也| 日韩黄黄| 婷婷香蕉视频| 激情五月婷婷| 色色色婷| 五月婷婷人妻| 久久网站免费亚洲| 4438国产免费看| 丁香五月天婷婷激情| 热99久久这里只有精品| 超碰免费成人| 九九九九九九九九九九九九九国产精品| 色婷六月| 久99热| 97在线精品视频| 丰满少妇猛烈A片免费看观看| 国产综合网在线| 激情综合婷婷| 伊人玖玖网| 99久久九九| 激情五月天偷拍综合网| 五月天综合区| 婷婷丁香射射| www.色色五月天.com| 天堂无码人妻精品AV一区| 夜夜爽天天干| 五月天欧美激情| 中文精品在| 激情综合色五月丁香| 丁香五月欧美激情| 日本成人噜噜噜| 色播五月婷婷综合| 九九碰九九爱97超碰| 123日本不卡在线| 亚洲人妻AV| 久久九九免费视频| 丁香五月亚洲婷婷| 五月天婷婷网站| 天天射天天干天插色综合| 玖玖婷婷五月天毛片| 丁香五月天婷婷激情| 激情五月天婷婷丁香 | 欧美123区免| 能看的AV| 五月天激情小说| 色色五月天婷婷丁香| 人人人操97| 婷婷 久综合| 五月婷婷丁香六月| 欧美婷婷丁香五月| 九九热99在线视频| 丁香久久激情俄| 久久中文网| 五月丁香啪| 日韩欧美一级大黄网站| 久久综合爱| 五月丁香偷拍| 狠狠狠狠狠狠| 婷婷在线视频| 99在线免费视频| 夜夜爽天天干| 丁香五月婷婷基地| 久久久久网站| 91九色丨国产丨爆乳| 婷婷五月六月丁香| 五月天婷婷丁香| 丁香五月婷婷激情蜜桃| 91人人爽久久涩噜噜噜| 久久人妻人人| 无码髙清| 六月色色| 五月婷婷六月丁香| j五月香在线| 五月婷婷涩涩爱| 国产成人精品一区二三区熟女在线| 人人操五月天| 精品人妻伦九区久久AAA片| 涩综合婷婷| 综合五月婷婷| 五月天伊人| 丰满老熟妇BBBBB搡BBB| 色狠狠婷婷| 超碰97在线观看免费| 91九色超碰| 国产激情一区| 成人资源在线| 日本99视频| 天天综合情| 欧亚色色| VA婷婷亚洲| 狠狠干思思热| 色欲婷婷五月天丁香| www.99精品在线| 99精品一二三四视频| 丁香婷婷五月六月久久| 夜夜操狠狠操| 任你干aa| 狠狠丁香| 婷婷激情五月综合基地| 啪啪小说五月天| 俺去也综合| 精品人人操| 婷婷亚洲色| 99精品偷自拍| 久久狠婷婷| 丁香五月激情棕合| AV天堂淫乩| 丁香五月天五码婷婷| 色J香五月天| 99在线视频免费| 欧美婷婷五月丁香| 激情综合视频| 在线观看的av| 1995年关宝慧版蜘蛛女| 91丨九色丨熟女| 五月开心网| 欧美槡BBBB槡BBB少妇| 久久九网| 九九热超碰| 六月丁香婷婷网| 亚洲色婷婷五月| 伊人婷婷大香蕉| 97人人操人人干| 六月婷综合| 97婷婷狠狠久久综合9色| 激情五月天婷婷图| 天天日天天爱天天噪| 最新av在线观看| 亚洲亚洲人成综合网络| 另类 在线| 天天做天天双| 91干在线| 五月天成人免费视频| 啪啪一区| 激情文学 综合 九月| 日韩无码成人电影| 色综合激情| 色五月激情网| 色五月婷婷操逼| 五月丁香狠狠爱婷婷综合| 99视频精品全部观看10| 色五月激情五月| 久久综合影院| www激情com| 深爱开心激情| 久婷婷五月天影院| 亚洲在线操| 五月婷婷这里都是精品| 激情久久五月天| 不卡在线超碰| 亚洲婷婷五月天综合| 久久九九免费视频| 婷婷影院A成人| 97人人操在线| 999热这里只有精品| 国产精品美女久久久久AV超清| 黄色一极大片| 天天干天天操| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 五月婷婷成人w| 久久色天堂| 亚洲区在线| 丁香香五月激情免费视频| 另类激情五月在线视频欧美| 欧美三级大片AA在线看| 五月天色在线| 精品一二三区久久AAA片| 久久天堂网| 99这里只有精品99| 人人人操 超碰| 97丁香花五月天激情小说| 天天做天天爱天天爽| 欧美性生交xXxX久久久| 99日在线观看视频| 久久婷婷五月综合啪| 99综合免费视频| 欧美大香蕉视频| 婷婷午夜天| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 99熟女| 五月天播播中文字幕| 精品9久| 久久婷婷六月综合资源| 九九在线精品| 五月丁香婷婷久久| 少妇人妻丰满做爰XXX| 丁香婷婷五月天网站| 99热这里是精品| 99热日| 婷婷五月激情丁香| www.91婷婷| 99热这里全都是精品| 亚洲精品另类| 五月丁香成人视频| 大香蕉人人人| 日本久久婷婷| 亚洲色啪| 99色色网| 天天干肏夜夜| 996re热精品视频| 狠狠色综合网站| 九九热123| 99色播| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 色色五月天激情| 婷婷五月天成人五月天| 色五月激情五月| 五月天欧美 另类小说| 99精品偷自拍| 色色 亚洲| 超碰免费电影| 婷婷 伊人 久久| 久久99久久99精品免观看粉嫩| 五月天激情久久| 亚洲欧洲国产精品| 日本狠狠干| 久热这里精品免费| 超碰在线观看成人视| 玖玖婷婷色五月| 996热re视频精品视频| 丁香六月婷婷开心| 婷婷丁香成人在线视频| 五月婷婷先锋| 色婷婷免费观看| 中文网AV| 九一娱乐在线观看视频| 婷婷色五天| 操97| 人人摸人人操人人爱| 婷婷五月花西瓜| 99玖玖人人| 天天肏夜夜肏| 五月天婷婷开心| 亚洲天堂玖玖| 香蕉综合网| 五月丁香WWW| 黄色av网站在线免费播放| 色综合伊人网| 99视频久久免费视频| 色婷婷色综合久久精品V| 日本高清综合网五月丁香| www.久久爱.com| 日本久久精品| 五月欧美丁香在线观看| 丁香五月综合色婷婷| 丁香六月婷婷基地| 天天爽人人综合免费7799| 永久99免费视频网站| 中文字幕丰满乱孑伦无码专区| 99色 | 午夜日日| 内射在线CHINESE| 亚洲精品大片| 五月天婷五月天综合网在线观| 97搞在线| 操一区| 色综合色综合色综合色综合| 九月丁香婷婷综合激情| 久久九九99桃花视频| 91久热| 人人视频人人干人人做| 国产精品噜噜在线视频| 大香蕉天堂| 99燥99日| A久久| www.com五月天| 亚洲中文丁香| 久久久久亚洲AV无码网影音先锋| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 丁香香五月激情免费视频| 综合久久六月| 激情小说色五月| 久久久97| 色播播五月天| 玖玖资源天天无码| 色婷婷欧美在线| 久艹大香蕉| 日韩啪啪视品| 99网| 久色激情| 色婷婷久久| 丁香午夜天| 26uuu激情五月天| 99操久久| 久久五月婷婷丁香| 97人妻人人| 亚洲欧洲中文日韩久久AV乱码| 99热亚洲| 天天干天天做| 天天爽天天摸天天爱| 婷婷五日b| 日本久久天堂| 五月婷婷人人人操| 91chinese 在线| 色色六月| 岛囯综合激情网| 亚洲亚洲人成综合网络| 婷婷丁香五月综合| 午夜一区| 狠狠色噜噜狠狠狠888| 久久九九@| 色婷婷久久综合久色综| 五月婷婷AV| 中文不卡一二区| 六月丁香综合999| 综合欧美五月婷婷| 丁香五月 综合| 人妻操逼视频。| 99热播放| 日本综合色图| 婷婷五月激情四月综合| 色情五月天视频网| 国在线激情网| 九九综合视频在线观看| 中文字幕成人| 色五月丁香五月激情五月激情| 99 r热| 久久婷婷精品| 亚洲激情综合色站| 丁香婷婷偷拍| 激情都市五月天| 亚洲久久婷婷丁香五月天| 婷婷色色综合激情| 日日噜狠狠色综合久久| 婷婷五月综合视频| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 婷婷五月天AV在| 亚洲欧洲小视频9| 欧美碰碰碰| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 色丁香五月天| 狠狠艹狠狠艹| 日本熟妇人妻在线| 五月丁香六月婷婷综合网缴情| 视色综合| 2014天天爽| 欧美va精品va老师va| 色之综合网| 六月婷婷狠狠| 天天舔天天摸天天透| 久热视频这里只有精品| 七七色色综合| 99爱在线免费视频| 97超碰免费超级在线观看| 97色射| 日韩精品99久久| 久久九九国产| 丁香五月六月久久综合| 九九久久综合网站| 26uuu日韩| 婷色五月天| 天天插天天干| 亚洲成人综合网在线免费观看| www.五月丁香| 六月婷婷五月丁香首页| 狠狠插狠狠| 免费亚洲婷婷| 九九99精品视频在线观看| 内射干少妇亚洲69XXX| 最新国产AV| 久碰婷婷视频| 日韩六六久久电影| 偷拍91九色| 丁香五月大香蕉| 五月婷婷性爱网| 丁香五月六月综合激情| 另类图片 五月激情| 激情五月少妇| 91九九| 美女久久婷婷| 久久免费9| 五月婷婷免费在线观看| 99九九热在线观看| 亚洲日韩操B| 二级黄色毛片| 深爱五月天天| 婷婷丁香成人| YW无码| 99婷婷| 精品久久66| 精品人妻一区二区三区四区不卡在| 婷婷五月丁香图片人人操| 久久久久网站| 婷婷五月天电影在线| 91超碰九色| 激情性爱五月天网页| 另类伊人婷婷| 久久A V无码视频| 色色色图| 激情亚洲婷婷| 久色资源网| 99免费在线| 色吊丝av中文字幕| 精品九九视频| 婷婷在线精品| 五月丁香激情四射| 四月丁香五月婷婷久久| 国产五月视频| 欧美成性色| 久久天堂| 五月色丁香婷婷综合| 99热 在线观看| 4438激情网| 色色999三级片| 丁香无五月网| 青草激情综合| 婷婷射图| 这里只有精品视频在线| 玖玖91| 欧美日韓成人亚洲精品另类| 久久草大香蕉| 六月丁香中文字幕| 另类激情首页| 日美三级| 色六月视频| 日本不卡一区二区三区| 精品九九在线观看视频| 97精品欧美91久久久久久久| 最新AV在线观看| 天天舔天天摸视频| 九月丁香很很色| 丁香五月婷婷丫| 九九这里有精品| 8区视频在线| 99这里热| 色五月婷婷综合在线| 亚洲婷婷免费| HD久久精品视频| 丁香五月激情无码视频| 狠狠噪| 欧美韩日AAA网站| 亚洲精品字幕在线观看| 亚洲另类电影| 丁香六月婷婷开心| 天天摸人人摸| 美欧日韩国产成人在战| 丁香 亚洲 久久| 日日噜狠狠色综合久| 婷婷五月丁香99| 久久婷婷五月草视频| 牛色色碰| 五月天婷婷五月| 五月天社区婷婷| 婷婷五月色网| 亚洲视频码| 欧美人妻一区二区| 色99婷婷五月天| 免费亚洲婷婷| 国产精品成人AV在线| 国产免费AV在线| 大香蕉精品视频| 国产亚洲色婷婷久久99精品91| 在线成人网站| 丁香激情五月| 5月婷婷六月丁香| 色综色网| 91午夜激情| enecarbon-materials.com污K127封锁请涟系@wip1688 | 色135综合网| 热99这里只有精品视频| 五月丁香六月停停停| 日本五月婷婷| 成人五月天丁香| 91成人性爱视频| 99久久黄色顶级视频| 日韩一区二区A片免费观看| 日本在线噜噜| 婷婷五月中文字幕| 六月丁香五月天| 五月婷婷久久激情| 在线五月婷| 69色婷婷| 五月婷婷六月丁香激情深爱| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 亚洲深喉aV| 99热这里只有精品86| 成人丁香色| 色99视频| 99热在线这里| 97色干| 激情内射人妻1区2区3区| 久久精品亚洲热| 超碰资源在线| 中文字幕网伦射乱中文| 婷婷色五月天在线观看| 日韩亚洲视频| 99久操视频| www.henhenl| 五月丁香va| 五月情涩综合婷婷| 丁香五月综合| 开心激情综合| 六月婷婷六月天天在线免费| 国产99久9在线+|+传媒| www.狠狠| 热成人网| 五月婷婷大香蕉| 伊人久久丁香五月91| 久久人人九九| 伊人网色婷婷五月天| 色综合丁香婷婷| 婷婷五月天天| 五月天婷婷视频| 天天情色综合网| 香蕉综合网| 嫩草视频| 五月婷在线| 婷婷五月花| 久久伊人日日夜夜| 99日本黄站| 思思热99er| 五月天婷婷丁香| 五月丁香六月婷婷激情视频在线观看免费 | 色久婷婷网| 97欧美在线| 1024在线一区| 天天草天天爽| 欧美日韩成人在线网站| 婷婷五月天亚洲图片| 一本久道综合色婷婷五月| 五月婷婷性爱网| 久久丁香五月天| 91九色熟女| www天天爽| 五月婷婷色播网| 国产成人网站在线观看| 欧美激情伊人| 99操九九网| JAPANRCEP老熟妇乱子伦视频 | 色五月婷婷91| 色综合色综合色综合| 另类少妇人与禽zOZZ0性伦| 色色激情网| 亚洲日日日| 五月天色婷婷基地| 激情婷婷亚洲五月| 婷婷五月黄色激情在线| 婷综合| 懂色av蜜臀av粉嫩av永陈冠希| 伊人网色婷婷五月天| 六月丁香啪啪| 五月婷婷成人| 激情av| 欧美日韩成人免费在线| 停婷丁五月在线| 91wwmm导航| 婷婷开心激情综合五月天| 天天色天天爱天天舔| 丁香五月1页| 五月婷婷久久综合| 啪啪激情网| 97色色婷婷五月天| 色婷婷丁香九月| 高清成人综合| 亚洲色色五月天| 99久热精品在线| 欧美日本高清视频99| 国产欧美大香蕉一区| www超碰com| 久草x色在线观看99| 激情婷婷丁香五月| 影音先锋91在线资源站| 黄网在线免费| 激情六月婷婷啪啪| 超碰人人在线观看| 欧美日韩国产成人在线| 狠狠色丁香久久综合婷婷亚洲成人福利| 丁香,开心成人,久久| 爱爱网址9| 色婷婷激情五月天丁香| 伊人五月婷| 97人碰人操| 久热视频97AV在线观看| 国产操逼视频网站| 91久久久久久久久久| 1024婷婷综合久久五月天| 婷婷五月丁香花综合| 99免费热视频在线| 九九久久精品| 天天爽—爽| 日韩成人精品一区久久久久| 日韩人妻操逼视频| 丁香六月婷婷综合欧美| 天天日天天色| 在线色色| 极品少妇XXXX精品少妇偷拍| 不卡在线视频| 色丁香五月婷婷综合久久| 欧美婷婷九月| 色五月综合在线| 五月天婷亚洲天综合网综合| 热99久久这里只有精品| 婷婷夜夜操| 91凹凸在线| 97色色网| www.第四色99| 亚洲AV第二区国产精品| 超碰99在线观看| www..com色爱| 五月色色激情网| 日本久久婷婷| 婷婷五月影院| 亚洲视频在线网| 操操人人| 九九成人精品| 久久综合五月天| 久久激情五月婷婷| 日韩在线观看网址| 国产精品视频网| 91精品91久久久中77777| 精品婷婷五月视| 天天日夜夜帕| 九九av| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 国产成人高清| 无码日本精品XXXXXXXXX | 婷婷六月久久| 色情性爱视频网址| 丁香五月天网友自拍啪啪啪视频| 亚洲综合视频在线| 精品一二三区久久AAA片| 热九九九九| 欧美色狠婷久| 狠狠草狠狠草| 婷婷色导航| 99热一本久道| 五月天色婷伊人| 日本成人噜噜噜| 91久久99久久91熟女精品| 91美女啪啪| 五月天婷婷激情网| 婷婷丁香五月亚洲| 激情综合五月婷婷| 久久五月情| 婷婷丁香色五月天久久88| 狠狠干夜夜干| 国产成人片| 久久婷婷网| 五月成人综合| 欧美性爱五月天| 丁香五月123| 91操操操| 日韩成人免费电影| 婷婷五月综合网激情| 狠色狠色狠狠色综合网| 色播五月综合网| 9|人妻人人操| 思思99热在线| 婷婷性爱网| 色婷婷久久9.com| 亚州激情在线视频| 激情久久五月天| 五月色丁香婷婷综合| 婷久看人爽| 色婷视频| 日本在线99| 日本成人噜噜| 最近免费中文字幕大全高清大全1| 99视频在线播放大全| 丁香五月天激情网| 国产精自产拍久久久久久蜜 | 69精品人人人人| 四月婷婷五月丁香| 久久男人网婷婷| 五月天六月天| 色五月天婷婷| www.色综合.com| 久色婷婷200| 一本久久婷婷| 五月丁香网中文字幕| 亚洲激情婷婷| 五月天开心色情网| 超碰人人操| 狠爱婷色| 五月天婷婷无码视频| 成人 在线观看国产| 99热6这里只有精品6| 激情av| 狠狠久久婷五月| 丰满人妻一区二区三区| 婷婷色一二三区波多野结衣| 精品,99| 婷婷五月色播天| 五月丁香综合精品| 无码人妻丰满熟妇奶水区码| 五月色婷婷在线观看| 久操热| 9久视频| 五月丁香婷婷综合网| 99在线资源| 婷婷色啪| 97人人搞| 亚洲啪视频| 欧美日朝成人| 99熟女| 久久xx| 狠狠色综合网| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 玖玖玖婷婷婷| 美女五月天| 97操| 亚洲人人操| 丁香五月情| 久久久婷婷婷| 九九视频免费| 99精品在线| 就爱干 在线| 乱乱av| 丁香五月婷婷欧美成人色图| 91狼友视频在线观看| 天天色激情| www.九月婷婷丁香.com| 色五月中文网| 丁香六月激情四射| 婷婷色五月激情| 激情综合啪啪啪| 亚洲色五月| 五月婷婷插一插| 亚洲免费成人电影AV| 激情五月婷婷开心网| 九九综合网色全集| 日本三级黄色大片| 久久黄色免费视频| 久久性综合| 第五色婷婷| 综合久久综合久久| 91啪啪视频| 色色色色色色综合| 99啪在线| 婷婷97| 色亭亭五月天网扯| 九九99视频精品| 日韩精品一区二区亚洲AV观看| 久激情网| A片女女女女女女BBBB| 99re最新地址| 99riAv1国产在线观看| 思思热在线视频精品| 色情激情五月| 九月婷婷综合网| 少妇激情五月天| 亚洲XX日本| 综合超碰熟| 亚洲综合激情五月久久| 就爱射中文字幕资源网| 欧美性爱中文字幕| 六月婷婷色综合| 精品无码99| 婷婷射综合| 国产特级毛片AAAAAAA高清| 色五月激情婷婷| 99操碰| www.金莲av| 婷婷午夜精品久久久| 婷婷五月永远18免费久久久| 亚洲蜜乳AV| 开心婷婷五月| 十月色综合| 久久精品色| 婷婷六月久久| 五月婷婷丁香五月| 午夜五月天| 深爱激情中文五月天av| 色婷婷亚洲综合天堂| 综合色色网| 色婷婷九月| 狠狠色婷婷7777久| 亚洲婷婷欧美婷婷| 一本久久亚洲五月婷婷| 色人久夂| 狠狠ri| 1024日韩| 天天干天干| 99人这里只有精品| www.久久99热地址发布| 久久大香蕉丁香| 97综合在线| 国产午夜精品久久久观看| 他改变了拜占庭| 五月婷婷精品| 91妻人人爽人人看片| 天堂A∨在线| 99精品大片| xx综合网| 婷婷亚洲色| 五月丁香毛片| 99se丁香| 日本高清久久| 香蕉狠狠爱视频| 五月天激情无码专区| 丁香丁香激情网| 人妻久热| 亚洲国产另类av| 国产特级毛片AAAAAAA高清| 久久网日本| 99热这里只| 五月天婷婷乱| 综合福利网| 色久天| 激情啪啪五月| 婷婷五月亚洲一本在线丁香| 秋霞簧片| 丁香无五月网| 男女99免费视频| 激情五月丁香六月综合AVXXXX| 婷婷最新地址| 99爱精品| 日韩另类| 天天色综网| 久久资源网五月婷| 99综合网| 国产五月天欧美色| 色五月亚洲开心网| 丁香激情六月天婷婷| 九九sese| AV激情五月| 97人人操在线| 伊人色综合影院视频| 激情亭亭五月| 大香蕉人人网| 九九色情网五月天| 国产女18毛片多18精品| 香蕉久操| 人人人操 超碰| 精品久久久久成人码免费动漫 | 99热精品中文字幕| 丁香成人色情五月天| 激情五月www| 人人做人人看人人摸| 天天干-天天日| 丁香五月婷婷色五月| 婷婷丁香久久五月综合| 婷婷五月天无码熟女| 久久6这里只有精品| 99热国产这里只有| 精品视频99看在线视频| Av性爱网| 五月综合777| 婷婷激情综合网| 丁香五月丁香伊人| 激情五月天小说视频| 青草激情在线| 色狠久| 天天爽夜夜操| 久久Xx| www.久久久.com| 亚洲色网络| 人人操av| 久久激丁香| 婷婷94s| www色综合亚洲92| 超级黄色片| 日韩成人av在线| www久久99com| 婷婷深爱五月天在线| 色婷婷狠狠久久综合五月| 激情五月综合网最新 | 337p大胆噜噜噜噜噜91Av| 久久XX| 日本久久精品| 丁香五月婷婷天激情| 五月丁香激情综合网官网| 中文字幕婷婷在线| 五月婷婷久久大香蕉| 99热在线观看| 婷婷丁香成人在线视频| 99er6热在线观看精品6| 99热这里全都是精品| 亚洲av网站| 日本精品久久久久中文字幕| 五月四色激情| 天堂综合久久| 激情网战码亚洲A| 亚洲婷婷婷| 夜夜骑天天操| 婷婷综合网| 大伊香蕉精品视频在线| 996黄色片| 91超碰在线观看| 一本久久亚洲五月婷婷 | 可以免费观看的av网址| 激情都市五月天| 五月丁香在线| 九九热在线视频| 久久久婷丁香五月| 99精品97| 婷婷丁香五| 六月婷婷五月天| 五月开心激情| 久久久久久99日本| 亚洲成人高清在线| 日日夜夜青青草| 99热这里只有精品中文字幕| 久久婷婷五月| 色啦啦视频| 色五月婷婷av| 一级A片天天操夜夜操| 六月婷婷综合激情| 荡乳尤物3HP1V5| av在线免费网站| 亚洲精品操一操、噜一噜、摸一摸、爽 | 国产亚洲成AV人片在线观黄桃| 热婷婷久| 五月丁香在线视频观看| 国产精品色婷婷AV综合色色| 五月婷婷激情综合| 开心色色五月天综合| 啪啪激情综合| 五月丁香婷婷三级| 五月天婷婷丁香| 婷婷五月天亚洲综合| 日韩成人无码| 大香蕉五月天婷婷丁香91| 丁香五月在线观看综合| 91丨九色丨白浆秘| 五月停性愛| 九九色逼| XX色综合| AA片在线观看视频在线播放| 免费视频无码| 五月花在线观看视频| 开心五月深爱五月| 久久国产高清| 五月婷婷成人w| 色婷婷在线播放| 色色草97| 婷五月天在线草| 成人一级片| 182tv992tv人之初午夜免费观看| 狠狠色婷婷777| 五月色亚洲| 不卡在线超碰| 99热乎| 五月激情婷婷综合| www久久久久久久久久久久久久久久久| 中文字幕 码精品视频网站| 婷婷五月天无码| 男人的天堂婷婷色五月| 五月丁香六月婷婷精品| 超碰99资源站| 日本在线观看aaa 99| 精品福利911| 五月丁香婷婷综合| www.henhenl| 丁香五月六月| 超碰2021| 青青草蜜臀| 超碰九色| 操碰97| 激情六月婷婷| 五月天另类图片区99| 久久激情五月天| 2025神马午夜福利| 99这里只有精品国产| 大香蕉九九| 色婷婷888| 五月天成人免费视频| 成人 九九九九| 激情五月天www| 中日韩美欧成人一区二区精品在线| 激情桃色网 | 99久久五月天| 五月婷婷激情视频| 色情激情五月婷婷| 国产精品激情五月天色婷婷| 久久A极片| 三级成人网站| 精品国产乱码久久久久夜深人妻 | 99热啪啪| 日本久久综合| 最新久久网址| 亚韩在线视频| 91大神操美女| 色碰碰| 狠狠色噜噜狠狠狠狠综合| 色天堂在线| 激情婷婷久久| 91要啪| 九九99免费理论| 伊人婷婷大香蕉| 久9热在线视频| 亚洲成人AV在线观看| 精品人人操| 91操熟女| 九九热99热| 久热这里只有精品性色AV| 中文av网| 《战争与艾拉》完整版| 成人无码精品1区2区3区免费看| 九九热这里有精品23| 成人精品视频99在线观看免费| 狠狠人人| 欧美性生交XXXXX无码小说| 韩国婷婷丁香五月| 182.t午在线观看| 婷婷五月色播放| 操久久精| 99久久久久| 五月丁香六月婷婷,婷| 国产成人精品一区二三区熟女在线| 色国产五月| 国模九区| 色婷婷小说网| 婷婷五月综合社区| 激情五月天影院| 日日干夜夜撸夜夜骑| 五月激情四射网站| 另类五月激情| 成人电影AV在线观看| 五月开心激情| 五月的婷婷六月丁香| 韩国97天堂| 日韩99视频| 欧美激情丁香五月| 成人.在线日韩| 九九99视频| 99 re视频一区| 色优久久| 婷婷综合色播网| 91色在线| 操操啪| 丁香六月激情综合啪啪| www.91婷婷| 五月丁香狠狠爱| 操射国产日本| 亚洲AV网址| 北京熟妇搡BBBB搡BBBB| 色五月综合激情| 五月婷啪啪| 中文字幕无码人妻少妇免费视频 | 26UUU| 久久久精品免费啪啪国| 9l视频自拍9l视频自拍九色学生| 成久综合视频| 欧美,日韩成人在线| 另类激情五月| 婷婷五月天深爱| 婷婷五月丁香色播| 丁香五月天激情| 中文乱子伦视频| 九色PORNY9l原创自拍| 成人婷婷色综合| 久久婷.com| www.久久66| 精品久久9| 99丁香五月| 120分钟婬片免费看| 久热精品视频| 天天做天天爱天天爽夜夜揉|