位元組排序函式
#include //返回網路位元組序的值
uint16_t htons(uint16_t host16bitvalue);
uint32_t htonl(uint32_t host32bitvalue);
//返回主機位元組序的值
uint16_t ntohs(uint16_t net16bitvalue);
uint32_t ntohl(uint32_t net32bitvalue);
//網路協議必須指定乙個網路位元組序,網際協議使用大端位元組序
//h:host
//n:network
//l:long
//s:short
位元組操縱函式
#include//支援套接字函式的系統
void bzero(void *dest, size_t nbytes); //目標字串中指定數目的位元組置0
void bcopy(const void *src, void *dest, size_t nbytes); //複製指定數目位元組
int bcmp(const void *ptr1, const void *ptr2, size_t nbytes); //相等為0,否則!0
//支援ansic的c函式庫
void *memset(void *dest, int c, size_t len);
void *memcpy(void *dest, const void *src, size_t nbytes);
int memcmp(const void *ptr1, const void *ptr2, size_t nbytes); //相等為0,否則!0
//const表示該字串不能被函式修改,即唯讀
//src與dest重疊時不能使用memcpy
位址轉換函式
//原先的函式
#include //將c字串轉換為乙個32位的網路位元組序二進位制值,並儲存在addrptr
//轉換前進行有效性檢查,若addrptr為空,不儲存任何結果
int inet_aton(const char *strptr, struct in_addr *addrptr); //有效返回1,否則返回0
//已廢棄,不做討論
in_addr_t inet_addr(const char *strptr); //返回32位網路位元組序值,出錯返回inaddr_none常值
//32位二進位制值轉字串,字串駐留在靜態記憶體中
char *inet_ntoa(struct in_addr inaddr); //以結構作為引數而不是指標
//新的函式支援ipv6
//這兩個函式的family引數可以是af_inet,也可以是af_inet6
//family引數不被支援返回錯誤,置error為eafnosupport
//成功返回1,表示式錯誤返回0,出錯返回-1
//從表達格式轉換為數值格式
int inet_pton(int family, const char *strptr, void *addrptr);
//成功返回指標,出錯返回null
//len指定大小:
//#define inet_addrstrlen 16
//#define inet6_addrstrlen 16
//len太小返回乙個空指標,置error為enospc
//strptr不可以為空指標
const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);
位元組讀寫函式
//學習unix網路程式設計時,為克服read,write,readline的缺陷,作者又定義了三個包裹函式
#include "unp.h"
//均返回:讀或寫的位元組數,若出錯返回-1
ssize_t readn(int filedes, void *buff, size_t nbytes);
ssize_t written(int filedes,const void *buff, size_t nbytes);
ssize_t readline(int filedes, void *buff, size_t maxlen); //極端的慢
Linux 網路程式設計 基本函式
我們現在所使用的網路tcp ip 其實就是大牛們幾十年前發明的東西,經過幾十年的發展,雖然出現了很多的其它協議,但是底層的東西卻基本穩定。現在的b s c s 等的網路體系都是執行在這樣乙個網路體系之上的。include include int socket int domin int type,i...
網路程式設計函式
include uint16 t htons uint16 t host16bitvalue uint32 t htonl uint32 t host32bitvalue 均返回 網路位元組序值 uint16 t ntohs uint16 t net16bitvalue uint32 t nohl ...
udp基本網路程式設計
udp傳輸資料不需要像tcp一樣建立連線,只需要知道客戶端和伺服器的ip位址即可。首先是伺服器端,初始化套接字結構位址,建立套接字,繫結埠,迴圈監聽。include include 基本標頭檔案 include socket include struct sockaddr in include st...