原创 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協議: 傳輸層協議 無連接 不可靠 面向數據報 服務器代碼: ///////////////