Modbus 開發工具實戰:ModScan32 與 Wireshark 抓包分析(一

引言

**

在工業自動化領域,Modbus 協議猶如一座橋梁,連接著各種電子設備,實現它們之間高效的數據交互。從可編程邏輯控制器(PLC)到人機界面(HMI),再到各類智能傳感器,Modbus 的身影無處不在,是工業通信中當之無愧的中流砥柱。

當我們深入 Modbus 開發時,ModScan32 與 Wireshark 抓包分析就像是我們手中的兩把利刃,發揮著至關重要的作用。ModScan32 能模擬 Modbus 主站,輕松實現對從設備的讀寫操作、監控與診斷,為開發與調試工作帶來極大便利;而 Wireshark 作為一款強大的網絡抓包分析工具,能夠精準捕獲 Modbus 通信數據包,讓我們清晰洞察通信細節,深入剖析協議交互過程。

接下來,就讓我們一同開啟這場 Modbus 開發工具的實戰之旅,深入探究 ModScan32 與 Wireshark 抓包分析的強大功能與實用技巧,為工業通信開發注入新的活力 。

Modbus 開發必備工具:ModScan32 與 Wireshark 介紹

ModScan32:功能強大的 Modbus 調試利器

ModScan32 是一款專為 Modbus 協議開發設計的調試工具,在 Modbus 開發領域中占據著舉足輕重的地位 。它的核心功能之一是能夠模擬 Modbus 主設備,這使得開發者可以方便地向 Modbus 從設備發送各種指令,從而實現對從設備的全方位測試與調試。無論是讀取從設備的寄存器數據,還是向寄存器寫入特定的值,ModScan32 都能輕松勝任。

在數據寄存器讀寫方面,ModScan32 支持對多種類型的寄存器進行操作,包括線圈寄存器(Coil Register)、輸入寄存器(Input Register)、保持寄存器(Holding Register)等 。這為開發者提供了極大的便利,例如在工業自動化場景中,開發者可以通過 ModScan32 讀取傳感器連接的輸入寄存器數據,實時獲取傳感器的測量值;也可以向保持寄存器寫入控制指令,實現對執行器的遠程控制。

ModScan32 還支持多種常見的 Modbus 設備,如各類 PLC、智能儀表、傳感器等 。這意味著無論你使用的是哪家廠商的 Modbus 設備,ModScan32 都有可能成為你的得力助手,幫助你快速建立起設備與上位機之間的通信連接,并進行高效的調試工作。

值得一提的是,ModScan32 擁有簡潔直觀的用戶界面,即使是初次接觸 Modbus 開發的新手,也能在短時間內快速上手 。它的操作流程簡單明了,通過幾個簡單的步驟就能完成設備連接、參數配置等操作,大大降低了學習成本和開發難度。而且,ModScan32 無需繁瑣的安裝過程,下載解壓后即可直接使用,為開發者節省了寶貴的時間和精力。

Wireshark:網絡世界的 “照妖鏡”

Wireshark 作為一款全球知名的開源網絡封包分析軟件,宛如一把犀利的手術刀,能夠精準地剖析網絡通信的每一個細節 。它的功能十分強大,其中最核心的功能便是捕獲網絡數據包。通過 Wireshark,我們可以實時抓取計算機網絡接口上傳輸的所有數據包,無論是 TCP、UDP 還是其他各種協議的數據包,都逃不過它的 “法眼”。

在捕獲到數據包后,Wireshark 提供了豐富的過濾和搜索功能,讓我們能夠快速定位到自己感興趣的數據包 。比如,我們可以根據源 IP 地址、目的 IP 地址、端口號、協議類型等多種條件對數據包進行過濾,只顯示符合特定條件的數據包,從而大大提高了分析效率。假設我們正在調試一個基于 Modbus TCP 協議的設備,就可以通過設置過濾條件,只顯示與 Modbus TCP 相關的數據包,避免其他無關數據包的干擾。

Wireshark 還能對捕獲到的數據包進行深入的統計分析 。它可以統計出不同協議的數據包數量、數據包的大小分布、網絡流量隨時間的變化趨勢等信息,幫助我們全面了解網絡的運行狀況。這些統計數據對于優化網絡性能、診斷網絡故障都具有重要的參考價值。

Wireshark 還具備強大的協議解析能力,能夠自動解析各種常見的網絡協議,包括 Modbus 協議 。當我們捕獲到 Modbus 數據包時,Wireshark 會自動將其解析為易于理解的格式,展示出數據包的各個字段含義,如功能碼、寄存器地址、數據內容等,讓我們清晰地看到 Modbus 通信的具體過程。不過,為了更好地解析 Modbus 協議,我們需要在 Wireshark 中安裝 “Modbus dissector” 插件,安裝完成后,Wireshark 就能對 Modbus 數據包進行更詳細、準確的分析了。

此外,Wireshark 還支持將捕獲到的數據包保存為文件,方便我們后續進行進一步的分析和研究 。同時,它也提供了將數據包導出為其他格式的功能,以便在其他工具中進行處理。

ModScan32 實戰操作

準備工作:下載與安裝 ModScan32

ModScan32 是一款實用的 Modbus 調試工具,可從其官方網站進行下載,確保下載的文件來源可靠,避免下載到惡意篡改的版本。若官方網站下載不便,也可在一些知名的軟件下載平臺搜索 “ModScan32”,如 CSDN 下載站、下載之家等。在下載時,需留意軟件版本及適用的操作系統,確保與自己的電腦系統兼容。

下載完成后,得到的通常是一個壓縮包文件。解壓該壓縮包,找到其中的 “ModScan32.exe” 文件,雙擊即可運行。ModScan32 無需復雜的安裝過程,解壓后即可直接使用,這大大節省了我們的時間和精力 。不過,在使用前,最好關閉電腦中的殺毒軟件或添加信任,以免殺毒軟件誤報,將 ModScan32 誤判為病毒程序而阻止其運行。

實戰演練:模擬主設備與從設備通信

下面以一個實際案例來演示 ModScan32 模擬主設備與從設備通信的操作步驟。假設我們有一個支持 Modbus 協議的智能傳感器作為從設備,需要通過 ModScan32 模擬主設備來讀取傳感器的數據。

首先,解壓下載好的 ModScan32 壓縮包,雙擊 “ModScan32.exe” 文件啟動軟件 。軟件啟動后,會彈出一個連接配置窗口。

在連接配置窗口中,我們需要配置通訊參數 。點擊 “Protocol Selection” 下拉框,選擇與從設備對應的通信協議,這里假設從設備使用的是 Modbus TCP 協議,所以選擇 “Modbus TCP/IP” 。然后,在 “IP Address” 欄中輸入從設備的 IP 地址,在 “Port” 欄中輸入從設備的端口號,通常 Modbus TCP 協議的默認端口號是 502 。接著,在 “Device Id” 欄中輸入從設備的設備 ID,這是從設備在 Modbus 網絡中的唯一標識,需根據實際情況填寫 。在 “Address” 欄中輸入要讀取的數據起始寄存器地址,“Length” 欄中輸入要讀取的寄存器數量 。這些參數都需要根據從設備的說明書來準確設置,以確保通信的正確性。

配置好通訊參數后,點擊 “OK” 按鈕完成設置 。回到 ModScan32 主界面,在 “MODBUS Point Type” 下拉框中選擇要讀取的寄存器類型,這里假設我們要讀取傳感器的測量值,而測量值存放在輸入寄存器中,所以選擇 “INPUT REGISTER” 。然后,點擊工具欄上的 “Send Request” 按鈕,向從設備發送讀取請求 。

此時,ModScan32 會向從設備發送 Modbus 請求數據包,從設備接收到請求后,會根據請求中的功能碼和寄存器地址,返回相應的數據 。ModScan32 接收到從設備返回的數據后,會在主界面的數據顯示區域展示出來 。我們可以看到傳感器的測量值以十進制、十六進制等格式顯示,方便我們查看和分析 。通過這樣的操作,我們就成功地使用 ModScan32 模擬主設備與從設備進行了通信,并讀取到了從設備的數據 。

進階技巧:ModScan32 高級功能應用

ModScan32 除了基本的通信測試功能外,還具備一些高級功能,能夠幫助我們更高效地進行 Modbus 開發和調試。

設備搜索功能是 ModScan32 的一大實用特性 。在復雜的工業網絡環境中,當我們不清楚從設備的具體 IP 地址或設備 ID 時,可以利用 ModScan32 的設備搜索功能快速定位從設備 。點擊 ModScan32 主界面菜單欄中的 “Search” 選項,選擇 “Search Devices”,軟件會自動在當前網絡中搜索支持 Modbus 協議的設備 。搜索完成后,會列出所有找到的設備及其相關信息,如 IP 地址、設備 ID 等,我們可以從中選擇要連接的設備,大大提高了設備連接的效率 。

實時監控功能可以讓我們實時了解 Modbus 通信的狀態和數據變化 。在 ModScan32 主界面中,有一個 “Show Traffic” 選項,勾選該選項后,會彈出一個通信數據監控窗口 。在這個窗口中,我們可以實時看到 ModScan32 與從設備之間發送和接收的數據包,包括數據包的內容、發送時間、接收時間等詳細信息 。通過分析這些數據,我們可以及時發現通信過程中出現的問題,如數據丟失、通信超時等,并進行相應的處理 。而且,ModScan32 還支持對實時監控的數據進行過濾和分析,我們可以根據自己的需求設置過濾條件,只顯示感興趣的數據包,方便我們更精準地分析通信數據 。

日志記錄功能也是 ModScan32 的一個重要功能 。ModScan32 會自動記錄所有的通信操作和數據,包括發送的請求、接收的響應、通信錯誤等信息 。這些日志文件對于我們后續分析通信問題、排查故障非常有幫助 。點擊 ModScan32 主界面菜單欄中的 “File” 選項,選擇 “Log”,可以打開日志文件查看 。在實際項目中,當出現通信故障時,我們可以查看日志文件,了解故障發生前后的通信情況,從而快速定位故障原因 。而且,我們還可以將日志文件保存下來,作為項目文檔的一部分,方便后續查閱和參考 。

Wireshark 抓包分析實戰

前期準備:安裝 Wireshark 及 Modbus 插件

Wireshark 作為一款強大的網絡抓包分析工具,在深入分析 Modbus 通信時發揮著重要作用 。我們可以在 Wireshark 官方網站(Wireshark ? Go Deep )下載到最新版本的安裝包,根據自己的操作系統選擇對應的版本,如 Windows 系統可選擇 Windows Installer(32 位或 64 位) 。下載完成后,雙擊安裝包開始安裝,安裝過程中只需按照默認設置,一路點擊 “Next” 即可完成安裝 。

安裝完 Wireshark 后,還需要安裝 “Modbus dissector” 插件,以實現對 Modbus 數據包的準確解析 。在瀏覽器中搜索 “Modbus dissector for Wireshark”,通常能在一些開源代碼托管平臺或 Wireshark 插件相關網站找到該插件的下載鏈接 。下載得到的插件文件一般為 “.lua” 格式 。將下載好的插件文件復制到 Wireshark 的插件目錄中,這個目錄通常位于 Wireshark 的安裝路徑下的 “plugins” 文件夾中,例如 “C:\Program Files\Wireshark\plugins” 。復制完成后,重啟 Wireshark,插件就會生效 。此時,Wireshark 就具備了強大的 Modbus 協議解析能力,為我們后續的抓包分析工作奠定了堅實的基礎 。

抓包實戰:抓取 Modbus 通信數據包

在使用 Wireshark 抓取 Modbus 通信數據包時,我們需要先設置捕捉過濾器,這樣可以確保只抓取到我們感興趣的 Modbus 數據包,避免其他無關數據包的干擾 。

首先,打開 Wireshark 軟件,在主界面中可以看到 “Capture Interfaces” 區域,這里列出了計算機上所有可用的網絡接口 。我們需要選擇與 Modbus 通信相關的網卡,比如連接 Modbus 設備的以太網網卡或串口轉以太網模塊對應的虛擬網卡等 。可以通過查看網卡的名稱、IP 地址等信息來確定,例如 “Ethernet 0”“Local Area Connection” 等 。選擇好網卡后,點擊 “Start” 按鈕,開始抓包 。

在抓包之前,我們可以先制造一些 Modbus 通信流量,以便能抓取到有效的數據包 。比如,使用 ModScan32 向 Modbus 從設備發送讀寫請求,或者讓實際的 Modbus 主設備與從設備進行正常的數據交互 。在通信過程中,Wireshark 會實時捕獲網絡接口上傳輸的數據包 。

當我們認為已經抓取到了足夠的 Modbus 數據包后,點擊 Wireshark 主界面上的 “Stop” 按鈕,停止抓包 。此時,Wireshark 會在主界面的 “Packet List Pane” 中顯示所有捕獲到的數據包 。由于我們在抓包時可能會捕獲到各種協議的數據包,為了方便查看 Modbus 數據包,我們需要設置顯示過濾器 。在 “Display Filter” 輸入框中輸入 “modbus”,然后按下回車鍵,此時 Wireshark 會過濾掉其他協議的數據包,只顯示 Modbus 協議的數據包 。我們可以看到每個 Modbus 數據包的相關信息,如幀編號、時間戳、源地址、目的地址、協議類型、數據包長度等 。

深度分析:解讀 Modbus 數據包信息

以一個實際抓取到的 Modbus 數據包為例,深入分析其各個字段的含義,有助于我們更好地理解 Modbus 通信過程中設備間的信息交換 。假設我們抓取到了一個 Modbus TCP 數據包,其具體內容如下:

事務處理標識符(Transaction Identifier):0x1234 ,這個標識符用于在查詢報文與未來響應之間建立聯系,確保請求與響應的對應關系 。在同一時刻,它對于 TCP/IP 連接來說是唯一的,就像是通信過程中的一個 “身份標簽”,可以幫助我們區分不同的通信事務 。比如,當主設備同時向多個從設備發送請求時,通過事務處理標識符就能準確地識別每個請求對應的響應 。

協議標識符(Protocol Identifier):0x0000 ,在 Modbus TCP 協議中,固定為 0x0000,表示這是一個 Modbus 協議的數據包 。它就像是一個 “協議徽章”,告訴我們這個數據包遵循的是 Modbus 協議規范 。

長度(Length):0x0016 ,表示整個 Modbus PDU(協議數據單元)的長度,包括功能碼、數據區等部分 。通過這個長度字段,我們可以知道數據包中有效數據的范圍,便于后續準確解析數據 。例如,如果長度字段顯示為 0x0010,那么我們就知道從功能碼開始往后 0x10 個字節的數據是有效的 Modbus 數據 。

單元標識符(Unit Identifier):0x01 ,用于標識 Modbus 從設備的地址 。在 Modbus 網絡中,每個從設備都有一個唯一的地址,主設備通過這個地址來與特定的從設備進行通信 。比如,當主設備要讀取地址為 0x01 的從設備的寄存器數據時,就會在數據包中設置單元標識符為 0x01 。

功能代碼(Function Code):0x03 ,表示讀取保持寄存器的操作 。不同的功能代碼代表不同的 Modbus 操作,例如 0x01 表示讀取線圈狀態,0x06 表示寫入單個寄存器等 。通過功能代碼,從設備可以知道主設備的具體請求是什么,從而執行相應的操作 。

數據區(Data Field):0x0000 0x0002 ,這里的數據內容根據功能代碼的不同而有不同的含義 。在這個例子中,由于功能代碼是 0x03(讀取保持寄存器),數據區的 0x0000 表示要讀取的起始寄存器地址,0x0002 表示要讀取的寄存器數量 。也就是說,主設備請求從地址為 0x01 的從設備中讀取從 0x0000 寄存器開始的 2 個保持寄存器的數據 。

通過對這個 Modbus 數據包的詳細分析,我們可以清晰地了解到主設備與從設備之間的通信意圖和數據交換內容 。在實際的 Modbus 開發和調試中,深入解讀數據包信息能夠幫助我們快速定位問題,確保通信的正確性和穩定性 。

常見問題與解決:抓包分析中的難題處理

在使用 Wireshark 抓包分析 Modbus 通信過程中,可能會遇到一些問題,下面我們來逐一分析并提供相應的解決方法 。

無法抓取到數據包,可能是因為網卡選擇錯誤,沒有選擇與 Modbus 通信相關的網卡 。我們需要仔細檢查 Wireshark 的 “Capture Interfaces” 列表,確認選擇了正確的網卡 。例如,如果 Modbus 設備通過以太網連接,我們應選擇對應的以太網網卡;如果是通過串口轉以太網模塊連接,要選擇對應的虛擬網卡 。另外,防火墻或網絡訪問控制策略也可能阻止 Wireshark 捕獲數據包 。此時,我們需要檢查防火墻設置,確保允許 Wireshark 訪問網絡,或者暫時關閉防火墻進行測試 。如果使用的是企業網絡,還需聯系網絡管理員,確認網絡訪問控制策略是否限制了抓包操作 。

數據包解析錯誤,可能是由于 Wireshark 版本與 “Modbus dissector” 插件不兼容 。我們可以嘗試更新 Wireshark 到最新版本,并重新安裝或更新 “Modbus dissector” 插件 。在下載插件時,要注意選擇與當前 Wireshark 版本匹配的插件 。也有可能是 Modbus 通信協議本身存在錯誤或不規范的地方 。這時,我們需要仔細檢查 Modbus 設備的配置和通信協議,確保其符合 Modbus 協議標準 。可以參考 Modbus 協議的官方文檔,對設備的地址設置、功能代碼使用、數據格式等進行逐一核對 。

抓包數據量過大,導致分析困難 。當網絡中存在大量的 Modbus 通信流量時,抓取到的數據包數量可能會非常多,給分析帶來不便 。我們可以進一步優化顯示過濾器,使用更精確的過濾條件,只顯示我們關注的數據包 。比如,根據源地址、目的地址、事務處理標識符等進行過濾 。假設我們只關注某個特定主設備與從設備之間的通信,可以在顯示過濾器中輸入 “modbus && ip.src == 192.168.1.10 && ip.dst == 192.168.1.20”(其中 192.168.1.10 為主設備 IP 地址,192.168.1.20 為從設備 IP 地址) 。還可以使用 Wireshark 的統計功能,對抓包數據進行匯總和分析,如統計不同功能代碼的使用頻率、數據包大小分布等,以便快速了解通信的整體情況 。通過這些方法,我們能夠更有效地解決 Wireshark 抓包分析 Modbus 通信過程中遇到的問題,提高分析效率和準確性 。

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/news/914514.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/news/914514.shtml
    英文地址,請注明出處:http://en.pswp.cn/news/914514.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    Oracle SQL - 使用行轉列PIVOT減少表重復掃描(實例)

    [13/JUL/2025, Yusuf Leo, Oracle SQL Performance Tuning Series]我們經常會遇到從同一表中按不同維度取出不同區間的數據,再以相同的屬性將這些數據分別匯總到一起的需求。這類需求往往迫使我們對同一個表反復去掃描,當原始數據量太大的時候&#xff0…

    HTTP 請求方法詳解:GET、POST、PUT、DELETE 等

    在 HTTP 協議中,請求方法(也稱為 HTTP 動詞)定義了客戶端希望對指定資源執行的操作類型。這些方法是 HTTP 報文的核心組成部分,決定了請求的目的和行為。 主要 HTTP 請求方法 1. GET 用途:獲取資源 特點&#xff1a…

    Android 代碼熱度統計(概述)

    1. 前言 代碼熱度統計,在測試中一般也叫做代碼覆蓋率。一般得到代碼覆蓋率后就能了解整體樣本在線上的代碼使用情況,為無用代碼下線提供依據。 做了一下調研,在Android中一般比較常用的是:JaCoCO覆蓋率統計工具,它采…

    RAG優化

    RAG搭建本地AI知識庫,在使用過程中遇到的三大痛點,以及相應的進階方案。1. RAG知識庫的三大痛點-- 內容理解不足:AI難以全面理解導入資料的內容,比如在向量編碼時候,生硬的截斷等導致分析結果不理想。eg: 知識庫分割器…

    Ubuntu 24.04 啟用 root 圖形登錄

    關鍵詞:Ubuntu 24.04、root 登錄、GDM、SSH、nano、配置文件一、前言 Ubuntu 默認禁用 root 賬戶 的圖形與 SSH 登錄,這是為了安全。但在某些場景(如測試、救援、自動化腳本)你可能需要 直接用 root 登錄 GNOME 桌面。本文以 Ubun…

    Jekyll + Chirpy + GitHub Pages 搭建博客

    Chirpy 是適用于技術寫作的簡約、響應迅速且功能豐富的 Jekyll 主題,文檔地址:https://chirpy.cotes.page/ ,Github 地址:jekyll-theme-chirpy 。 1.開始 打開 chirpy-starter 倉庫,點擊按鈕 Use this template -->…

    學習 Flutter (一)

    學習 Flutter (一) 1. 引言 什么是 Flutter? Flutter 是 Google 開發的一套開源 UI 框架,主要用于構建高性能、高保真、跨平臺的應用程序。使用一套 Dart 編寫的代碼,開發者可以同時構建適用于: Android iOS Web Windows、mac…

    Spring Boot 實現圖片防盜鏈:Referer 校驗與 Token 簽名校驗完整指南

    Spring Boot 實現圖片防盜鏈教程(Referer 校驗 Token 簽名校驗)本文將詳細講解兩種防盜鏈實現方案,并提供完整代碼示例。方案一:Referer 校驗通過檢查 HTTP 請求頭中的 Referer 字段判斷來源是否合法。實現步驟創建 Referer 攔截…

    從 JSON 到 Python 對象:一次通透的序列化與反序列化之旅

    目錄 一、為什么要談 JSON 二、最快速上手:兩把鑰匙 dumps 與 loads 三、深入 dumps:參數是魔法棒 四、深入 loads:把風險擋在門外 五、文件級序列化:dump 與 load 六、處理中文與編碼陷阱 七、異常場景與調試技巧 八、實…

    Leetcode 3315. 構造最小位運算數組 II

    1.題目基本信息 1.1.題目描述 給你一個長度為 n 的質數數組 nums 。你的任務是返回一個長度為 n 的數組 ans ,對于每個下標 i ,以下 條件 均成立: ans[i] OR (ans[i] 1) nums[i] 除此以外,你需要 最小化 結果數組里每一個 a…

    黑搜小知識 | DNS域名解析過程是什么樣的?

    什么是DNS?DNS( Domain Name System)是“域名系統”的英文縮寫,是一種組織成域層次結構的計算機和網絡服務命名系統,它用于TCP/IP網絡,它所提供的服務是用來將主機名和域名轉換為IP地址的工作。舉例來說,如果你要訪問域…

    MyBatis 使用教程及插件開發

    作者:小凱 沉淀、分享、成長,讓自己和他人都能有所收獲! 本文的宗旨在于通過簡單干凈實踐的方式教會讀者,使用 SpringBoot 配置 MyBatis 并完成對插入、批量插入、修改、查詢以及注解事務和編程事務的使用,通過擴展插件…

    Maui勸退:用windows直接真機調試iOS,無須和Mac配對

    初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github:codetoys,所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的,可以在任何平臺上使用。 源碼指引:github源…

    【極客日常】后端任務動態注入執行策略的一種技術實現

    近期做項目時遇到一個場景,是需要在后端任務執行時動態注入策略。具體而言,筆者負責的后端服務,可以理解是會在線上服務發布時,對服務風險做實時掃描,那么這個掃描就需要根據當前線上服務發布上下文,匹配對…

    8. JVM類裝載的執行過程

    1. JVM介紹和運行流程-CSDN博客 2. 什么是程序計數器-CSDN博客 3. java 堆和 JVM 內存結構-CSDN博客 4. 虛擬機棧-CSDN博客 5. JVM 的方法區-CSDN博客 6. JVM直接內存-CSDN博客 7. JVM類加載器與雙親委派模型-CSDN博客 8. JVM類裝載的執行過程-CSDN博客 9. JVM垃圾回收…

    Linux操作系統之信號:信號的產生

    前言:上篇文章我們大致講解了信號的有關概念,為大家引入了信號的知識點。但光知道那些是遠遠不夠的。本篇文章,我將會為大家自己的講解一下信號的產生的五種方式,希望對大家有所幫助。一、鍵盤(硬件)產生信…

    pdf拆分

    文章目錄 背景目標實現下載 背景 好不容易下載的1000頁行業報告,領導非要按章節拆分成20份!學術論文合集需要按作者拆分投稿,手動分頁到懷疑人生…客戶發來加密合同,要求每5頁生成獨立文檔,格式還不能亂! …

    vue3使用mermaid生成圖表,并可編輯

    效果圖實際代碼<template><div class"mermaid-container" style"z-index: 99999" ref"wrapperRef"><!-- 控制欄 --><div class"control-bar"><div class"control-bar-flex control-bar-tab-wrap"…

    tcp/quic 的滑動窗口

    一、滑動窗口 rwnd&#xff1a; 接收端窗口&#xff0c;接收方在每次發送ACK確認報文時&#xff0c;會包含一個 rwnd (Receive Window Size) 字段&#xff0c;指明自己當前剩余的接收緩沖區大小&#xff08;即可用窗口&#xff09;&#xff0c;這里是否是socket的接收緩沖區&am…

    JVM監控及診斷工具-命令行篇

    18.1. 概述 性能診斷是軟件工程師在日常工作中需要經常面對和解決的問題&#xff0c;在用戶體驗至上的今天&#xff0c;解決好應用的性能問題能帶來非常大的收益。 Java 作為最流行的編程語言之一&#xff0c;其應用性能診斷一直受到業界廣泛關注。可能造成 Java 應用出現性能…