Beej's Guide to Network Programming 系列連載 14:send() 與 recv() — 資料收發核心
前言:連線建立後的核心操作 經過 socket()、bind()/connect()、listen()/accept(),我們終於擁有了可通訊的 connect
直接插入排序演算法:C++ 實作與效能分析
前言:簡單但實用的排序演算法 直接插入排序是原地、穩定、線性空間的排序演算法。雖然平均時間複雜度為 O(n²),但對小規模資料、近乎有序、或線上排序 (資料逐筆
C 語言 EOF 與 feof() 深度解析:為什麼二進制檔案不能用 EOF 判斷結束
EOF (End Of File) 的本質 定義於 <stdio.h>,通常展開為 -1(int 型別)。 **僅適用於文本檔案**的讀取
C 語言隨機數生成完全指南:rand()、srand() 與時間種子最佳實踐
前言:偽隨機數的本質 rand() 產生的是偽隨機數列 — 由確定性演算法根據初始種子生成。相同種子產生相同序列。這在除錯時是優點 (可重現),在正式環境是缺點
Beej's Guide to Network Programming 系列連載 13:accept() — 取出連線的藝術
前言:accept() 的奇妙機制 accept() 是伺服器端從「等待佇列」取出一個已完成三向交握的連線,並回傳一個全新的 socket 描述符。原本的 li
Beej's Guide to Network Programming 系列連載 12:listen() — 伺服器端開始監聽
前言:從「主動連線」轉為「被動等待」 伺服器端不主動連線,而是在特定埠口等待客戶端上門。這需要兩步驟:listen() 將 socket 設為「監聽模式」,ac
Beej's Guide to Network Programming 系列連載 11:connect() — 客戶端發起連線
前言:客戶端的核心動作 connect() 是客戶端主動發起 TCP 連線的關鍵系統呼叫。與伺服器端的 bind()+listen()+accept() 不同,
Beej's Guide to Network Programming 系列連載 10:bind() — 綁定埠口的關鍵步驟
前言:為什麼需要 bind()? socket() 只是取得一個「通訊端點代號」,此時尚未綁定任何 IP 位址或埠號。伺服器端必須呼叫 bind() 將 soc
C++ 空類別的隱式成員函數:標準規定 vs 經典誤區
前言:一個看似簡單的面試題 class Empty {}; 這個空類別到底有哪些隱式成員函數?網路上流傳的「六大預設成員」說法:**預設建構子、拷貝建構子、解構
換行符大揭密:Windows (\r\n) vs Linux (\n) 相容性完全指南
前言:看不見的字元,看得見的災難 跨平台開發最讓人頭痛的細節之一,就是換行符不一致。Windows 用 \r\n (CRLF),Linux/Unix/macOS
位元運算技巧:8 位元對齊與 2 的 N 次方對齊通用演算法
前言:嵌入式開發常見的對齊需求 在驅動程式開發、記憶體管理、DMA 傳輸、快取行對齊等場景,頻繁需要將數值「向上對齊」到特定邊界。最常見的是8 位元組對齊(64
Beej's Guide to Network Programming 系列連載 09:socket() — 取得檔案描述符的藝術
前言:socket() 的真正用法 許多教學讓初學者死記 PF_INET、SOCK_STREAM、0 三個參數,實則硬編碼是大忌。現代正確做法:直接使用 get
Beej's Guide to Network Programming 系列連載 08:getaddrinfo() — 現代網路程式的基石
前言:告別手動填結構的時代 早期網路程式設計需手動呼叫 gethostbyname() 做 DNS 查詢,再自行填充 sockaddr_in 結構,不僅繁瑣且易
C++ 模板實戰:設計支援 ANSI/Unicode 雙版本的 Windows API 封裝庫
前言:Windows API 雙字元集的痛點 Windows API 為相容歷史套件,大多提供 ANSI (A 尾碼) 與 Unicode (W 尾碼) 兩個版
C 語言可變參數函數完整指南:va_list 機制原理與實戰避坑
前言:為什麼需要可變參數? printf()、scanf() 等標準庫函數之所以能接受不定數量、不定類型的參數,全賴 C 語言的可變參數機制。雖然 C++ 提供
C++ 模板進階應用:編譯期靜態類型判斷與 TypeChecker 實作
前言:模板的編譯期運算威力 C++ 模板不僅是泛型程式設計的工具,更是一種強大的編譯期運算機制。透過模板特化,我們可以在編譯階段完成類型判斷、條件選擇甚至複雜的
Beej's Guide to Network Programming 系列連載 07:從 IPv4 遷移到 IPv6 的關鍵步驟
前言 隨著網際網路的快速發展,IPv4 位址耗盡已成定局,IPv6 成為必然趨勢。許多開發者在維護既有網路程式碼時,面臨如何將原本基於 IPv4 架構的程式平滑
Beej 網絡編程指南第 06 篇:IP 地址轉換、私有網絡與 NAT 穿透基礎
4. IP 地址進階:字串與二進制互轉 現代 API:inet_pton / inet_ntop (支援 IPv4 & IPv6) 舊式 inet_addr、