網路位元組序和主機位元組序大小端不一樣。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...