原创 lua 補全IP地址位數

–IP地址補全 172.0.0.1 —> 172.000.000.001 local ip = '172.0.0.1'; local aa = '.'; function mysplit(inputstr, sep)

原创 lua 創建文本,讀取文本

創建文件夾 os.execute("md lxw") --寫文件 local file = io.open("lxw.txt","w") file:write("happy") file:close() --讀文件 local f

原创 排序——歸併排序

歸併排序:得到一個排序數組,先把它們劃分爲一個個有序的序列,再把每個有序的序列再一起歸併起來,着就是歸併排序。 代碼如下: void mergearray(int arr[], int start, int mid, int e

原创 memcpy()函數,memmove()函數

memcpy()函數,memmove()函數的實現。

原创 C++類型轉換(static_cast,dynamic_cast ...)

標準C++中爲了加強類型轉換的可視性,引入了四種命名的強制類型轉換操作符。 static_cast reinterpret_cast const_cast dynamic_cast 爲了更好的理解C++中的類型轉換,我們先講講我

原创 模擬實現:strlen,strcat,strchr,strcpy,strcat...

模擬實現的字符串處理函數: strlen,strcat,strncat,strchr,strrchr,strcpy,strncpy 1.strlen,求字符串的長度,不算‘/0’ size_t mystrlen(const char *

原创 基於TCP協議的回顯服務器

基於TCP協議的回顯服務器,簡單的只有一個連接客戶端。 服務器流程: 1.創建文件描述符sock,並初始化 sockaddr_in ip地址和端口號 2.bind() 綁定文件描述符 3.accept() 阻塞等待客戶

原创 ICMP協議(ping命令,traceroute命令)

ICMP協議 ICMP協議是一個網絡層協議。 我們在建立好網絡通信的時候,肯定要進行網絡是否通暢。我們知道IP協議並不提供可靠的傳輸,無法通過IP協議來反饋我們的網絡是否通暢,TCP又是傳輸層的協議,並不能在這裏使用,所以提出了ICM

原创 TCP 流量控制/擁塞控制

流量控制——TCP支持根據接收端的處理能力,來決定發送端的發送速度。 我們知道TCP在接受方有接受緩存區,如果接受緩存區接受滿了,會造成什麼呢? 流量控制:如果接收端的接受緩存區滿了,就接受不了數據了,而發送方還一直的發送數據段給接受方

原创 網絡編程面向字節流—粘包問題

粘包:通俗的講,在我們買包子的時候,我們可以看到蒸籠中,每個包子之間都隔開了空間,或者是用紙把每個包子都隔離開了,不讓它們粘在一起。如果讓兩個包子之間無縫隙的在粘在一起。當你買包子時,老闆把一個包子裝起來,另個一個包子的皮就會粘到你的這個

原创 TCP 延時應答/捎帶應答

延時應答 我們知道TCP中,有確認應答機制以保證數據的可靠傳輸。但是是不是接受方接受到數據就立即返回ACK應答呢?如果是這樣,這時候的緩衝區中接收區的數據還沒能夠處理,緩存區的剩餘大小就是窗口大小。 但是如果我們延遲一會,等待緩存區中數

原创 網絡層 IP協議、NAT技術

網絡層:最主要的功能就是:在複雜的網絡環境中確定一個合適的路徑。 如何在網絡層中準確的找到合適的路徑發送數據呢? 這就需要我們的IP協議了。 IP協議基本概念: 主機:配有IP地址,但是不能進行路由控制的設備 路由器:即配有IP地址

原创 sscanf,sprintf,fread,fwrite

sscanf 讀取格式化的字符串中的數據 定義函數 int sscanf (const char *str,const char * format,........); sscanf與scanf類似,都是用於輸入,子是後者以鍵盤

原创 IP地址轉換函數

IPv4的socket網絡編程中,sockaddr_in中的成員struct in_addr sin-addr 表示32位的IP地址,但是通常我們使用的是點分十進制的字符串表示IP地址,那麼這兩個如何轉換呢? #include<arpa/

原创 簡單的UDP實現

根據UDP協議的特性,我們實現一個簡單的回顯服務器。 UDP協議: 傳輸層協議 無連接 不可靠 面向數據報 服務器代碼: ///////////////