UNP讀書筆記第三章

2021-06-22 19:32:01 字數 1972 閱讀 5561

網路位元組序和主機位元組序大小端不一樣。linux提供了4個轉換函式;

#include

uint16_t htons(uint16_t value);

uint32_t htonl(uint_32t value);

uint16_t ntohs(uin16_t value);

uint32_t ntohl(uin32_t value);

ip位址可分為表達 和 數值  用這兩個函式轉換 ,ipv4 ipv6 通用

int inet_pton(int family, const char *strptr,void *addrptr);

const char* inet_ntop(int family, const  void *addrptr,char *strptr,size_t len);

readn writen readline 函式

#include

#include

int readn(int fd, void *vptr, int n)

else if( nread == 0)

break;

nleft -= nread;

p += nread;

}return (n-nleft);

}

int writen(int fd,const void *vptr,int n)

nleft -= nwrite;

ptr += nwrite;

}return n;

}

#include #include int readline(int fd, void *vptr, int maxlen)

else if( readc == 0)else

}*ptr = 0;

return n;

}

三個函式都查詢entir錯誤,表示被系統訊號中斷。

readline 快速版本

/*

*readline.cpp中的readline版本及其緩慢,因為每讀乙個資料就呼叫一次系統呼叫

*改用標準i/o資料庫(stdio)相當誘人,但是這是非常危險的,stdio的緩衝區不可見

*這個版本增加了自己的緩衝區,提高效能

*但是這個函式是不可重入或者說執行緒不安全的

*/#include #include static int read_count;

static char *read_ptr;

static char read_buff[1024];

static int my_read(int fd, void *ptr)

else if(read_count == 0)

return 0;

read_ptr = read_buff;

break;

}read_count--;

*ptr = *read_buff++;

return 1;

}int readline_quick(int fd, void *vptr, int maxlen)

else if( readc == 0)else

}*ptr = 0;

return n;

}

第三章讀書筆記

程序管理 3.1程序 程序就是處於執行期的程式 目標碼存放在某種儲存介質上 但程序並不僅僅侷限於一段可執行程式 執行執行緒,執行緒,是程序活動的物件。兩種虛擬機制 虛擬處理器和虛擬記憶體。最終,程式通過exit 系統呼叫退出執行。3.2程序描述及任務結構 核心把程序的列表存放在叫做任務佇列的雙向迴圈...

第三章讀書筆記

本章是講了git的使用入門,為學習本書的人展示了git的基本用法。儘管git並不是學習android移植和linux核心 驅動開發必須掌握的技術。但對於深入研究這些底層技術的人來說,git將成為學習過程中必不可少的工具。git是什麼,git就是乙個開源的分布式版本控制系統,用以有效 高速的處理從很小...

C Primer 讀書筆記 第三章

2010 09 14 19 58 68人閱讀收藏 舉報讀書 c string 第 章 標準庫型別 標準庫bitset型別 以下下標和位數均為 size t 型 定義在標頭檔案 cstddef 中,unsigned 整型 bitset 是一種類模板,用於儲存位集,並提供測位和置位操作 定義和初始化 b...