網路程式設計 基本函式

2021-09-25 14:58:19 字數 2206 閱讀 1419

位元組排序函式

#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...