原创 URL的解析,C語言實現

一 說明(1)應用情況:比如基於socket來實現http協議等,這時候就需要解析URL。(2)爲了移植性,沒有用非標準C庫windows下的StrDup(linux下爲strdup),用自己編寫的dup_str。(3)編譯環境:win

原创 大小端的問題的話語場景:代碼移植和網絡通信

只知道大小端是什麼意思,而不知道大小端的應用場景,顯然對這個東東是不可能有深刻理解的。(1)爲什麼出現這個東西? 答:在各種計算機體系結構中,對於字節、字等的存儲機制有所不同。(2)何謂大端,何謂小端? 答:這個有點繞。簡單的:if(0x

原创 查表法的應用舉例

第一題、請問怎樣將隨機輸入的字符串,統計裏面每個字符所出現的次數?? 算法設計: void comNum(const char*Src,char Result[256]) { if(Src == NULL) return; i

原创 非阻塞socket之send的使用---異步send

(1)錯誤現象:在發送小量數據的時候沒有問題,一次發送完畢。但是當發送1008046個字節的時候,由於數據較大,系統一次約發送46336個字符,但是時而發送成功,時而中間斷掉。現象是不穩定,並且返回Resource temporarily

原创 http digest認證過程分析及例子

驗證過程:            步驟一、客戶端向服務器申請數據                         ****************************Request***************************

原创 二重指針、指針引用的效果分析

編譯環境:Visual Studio2010  一、代碼分析 這是做了一個分別使用二重指針和指針的引用帶回函數處理結果的例子,左邊圖使用二重指針,右邊圖使用指針引用。可以看出來就這個問題來說,使用指針引用簡單。但是對於純C語言的代碼C的編

原创 C/C++編譯或鏈接,錯誤彙總

低級錯誤彙總: (1)環境:eclipse c語言;錯誤現象: 找不到庫文件裏的函數,編譯時無錯誤,也沒有提示找不到庫。只是在鏈接時提示找不到該函數。 原因:庫之間有依賴性,有先次序之分,調整以下庫的次序就可以解決問題了。 (2)環境:e

原创 ShowWindow後面UpdateWindow的作用

#include <Windows.h> #include <stdio.h>//sprintf //對調函數:窗口過程函數,由操作系統調用 LRESULT CALLBACK WinProc(HWND hwnd, UINT uMsg,

原创 關於產品設計中的幾個權衡點

第一個,安全性。這個是最基本的要求,但是很多設計代碼的人會寫正確的功能。這個在開始的時候感覺進度很快,但從較長時間來看,後續的測試和優化將會花費更多時間,這個大概可以叫做業績驅動開發吧,因爲市場很着急,老闆很着急。不安全的設計會造成最差的

原创 JSON C庫的使用

本文使用的Json C庫:http://json-c.github.io/json-c/          版本:0.11                                                 頭文件1----

原创 C字符串方面的問題

第一題:母串裏面查找子串(1)遞歸方法 #include <string.h> int strstr_count(const char *s, const char *child) {         char *p = strstr(s

原创 memcpy和sprintf的區別

應用場景:如果對於協議傳輸數據,memcpy比較好,因爲可以嚴格控制存入數據的位置。但是對於向一塊內存連續的存入數據sprintf是比較好的選擇。一

原创 異步回調過程分析(客戶端:cURL獲取網頁源碼)

一、說明 (1)爲了代碼簡潔,便於表述,採用C++編譯環境 (2)本代碼需要curl庫的支持,可以通過http://curl.haxx.se/下載 (3)後續再實現服務端的代碼。先儘可能簡單的理解異步回調的過程,再由淺入深。 二、代碼實現

原创 socket bind在客戶端和服務器端使用的區別

1、client bind (1)bind端口 由進程選擇一個端口去連服務器,(如果默認情況下,調用bind函數時,內核指定的端口是同一個,那麼調用多個調用了bind()的client程序,會出現端口被佔用的錯誤)注意這裏的端口是客戶端的

原创 對於HTTP保持網絡連接的解讀

一、TCP短連接與長連接的區別 (1)短連接:一般只會在client/server間傳遞一次讀寫操作。此方式常用於一點對多點通訊。C/S通信。HTTP就是使用了類似的短連接。目的:減少服務器的壓力;減少資源的浪費。 (2)長連接:Clie