一、socket
函式作用:建立乙個新的socket套接字
函式原型:int socket(int domain,int type, int protocol)
af_inet:ipv4,af_inet6:ipv6
2)type:sock_stream tcp面向資料流
sock_dgram udp協議
sock_ram 提供原始網路協議
3)protocol:指定socket傳輸協議編號,設為0即可
返回值:成功返回socket套接字描述符,失敗返回-1
標頭檔案:#include
二、bind
函式原型:int bind(int sockfd,struct sockaddr* my_addr,socklen_t addrlen)
函式引數:1)sockfd:套接字描述符
structsockaddr_in
sa_family_t sin_family;//位址族:af_unix,af_inet,af_inet6
uint16_t sin_port;//埠號,要用網路位元組表示
structin_addr sin_addr;//ipv4位址結構體
structsockaddr
charsa_data[15];//位址值
//ipv4位址結構體
structin_addr
u_int32_t s_addr;//ipv4位址,要用網路位元組表示
標頭檔案:#include
#include
返回值:成功返回0,失敗返回-1
三、listen
函式作用:聆聽網路,等待連線
函式原型:int listen(int sockfd,int backlog)
函式引數: 1)sockfd:套接字描述符
2)backlog:允許接入的客戶端數目
注意:listen並沒有連線,只是設定socket的listen模式而已,真正的連線是accept
返回值:成功0,失敗-1
四、accept
函式作用:接收網路的連線,客戶端連線,三次握手
函式原型:int accept(int sockfd,struct sockaddr* addr,socklen_t* addlen)
2)addelen:struct sockaddr的長度
返回值:成功返回新的fd,出錯返回-1
函式accept所返回的檔案描述符是套接字描述符,該描述符連線到呼叫connect的客戶端。這個新的套接字描述符和原始套接字(sockfd)具有相同的套接字型別和位址族。傳給accept的原始套接字沒有關聯到這個連線,而是繼續保持可用狀態並接收其他連線請求。
五、connect
函式作用:建立socket連線,客戶端連線伺服器使用
函式原型:int connect(int sockfd,struct sockaddr* serv_addr,int addrlen)
2)addrlen:struct sockaddr的長度
返回值:成功0,出錯-1
六、send
函式作用:經過socket傳送資料,向對方傳送資料
函式原型:int send(int sock_fd,const void* msg,int len,unsigned int flags)
2)msg:傳送的資料
3)len:資料長度
4)flags:設為0
返回值:成功是實際傳遞出去的位元組數,出錯-1
七、recv
函式作用:經過socket接收資料
函式原型:int recv(int socket_fd,void* buf,int len,unsigned int flag)
函式引數:1)sock_fd:accept以後的socket套接字描述符
3)len:接收資料的最大長度
返回值:成功返回接收的位元組數,出錯-1
八、位元組序的轉化函式
標頭檔案 #include
uint32_t htonl(uint32_t hostin32) 32位資料傳送,從主機到網路
uint16_t htons(uint16_t hostin16) 16位資料傳送,從主機到網路
uint32_t ntohl(uint32_t netint32) 32位的資料接收,從網路到主機
uint16_t ntohs(uint16_t netint16) 16位的資料接收,從網路到主機
九、位址格式的轉換
標頭檔案 #include
inet_port()
函式原型:int inet_pton(int domain,const char* restrict str,void* restrict addr)
2) str:位址字串(點分十進位制)指標
返回值:成功1,格式無效0,出錯-1
函式作用:點分十進位制轉化位網路位元組序
inet_ntop()
函式原型:inet_ntop(int domain,const void* restrict addr,char* restrict str,socklen_t size)
3) str:位址字串(點分十進位制)指標
4) size:位址字串大小
函式作用:網路位元組序轉化成點分十進位制
十、位元組操作函式
#include
void bzero(void* dest,size_t nbytes)
void bcopy(const void* src,void* dest,size_t nbytes)
int bcmp(const void* ptr1,const void* ptr2,size_t nbytes)
返回值:0 相等,非0 不相等
#include
void* memset(void* dest,int c,size_t len);
void* memcpy(void* dest,void* src,size_t nbytes)
int memcmp(const void* ptr1,const void* ptr2,size_t nbytes)
返回值:0 相同,>0或<0 不相同,進行比較操作時,假定兩個不相同的位元組均為無符號字元(unsigned char)
十一、close
#include
int close(int sockfd)
返回:0 ok,-1 出錯
十二、read/write
標頭檔案:#include
函式原型:ssize_t read(int fd,void* buf,size_t nbytes)
返回值:返回讀到的位元組數;若已到檔案尾返回0;若出錯返回-1
函式原型:ssize_t write(int fd,void* buf,size_t nbytes)
返回值:若成功返回已寫的位元組數;若出錯返回-1
十三、位址資訊函式getsockname/getpeername
getsockname
標頭檔案:#include
函式原型:int getsockname (int sockfd, struct sockaddr* address, socklen_t address_len)
函式返回值:成功返回0;失敗返回-1
函式作用:getsockname獲取sockfd對應的本端socket位址,並將其儲存於address引數指定的記憶體中,該socket位址長度則儲存於address_len引數指向的變數中
getpeername
標頭檔案:#include
函式原型:int getpeername (int sockfd, struct sockaddr* address, socklen_t address_len)
函式返回值:成功返回0;失敗返回-1
linux網路程式設計基礎api
socket系統呼叫,成功返回乙個socket檔案描述符,失敗返回 1並設定errno bind命名套接字,成功返回0,失敗返回 1並設定errno listen監聽socket,成功返回0,失敗返回 1並設定errno accept從listen監聽佇列中接受乙個連線,成功返回新的socket,失...
網路程式設計 常用API
該類用於標識網路上的硬體資源,表示網際網路協議的ip位址 該類沒有構造方法,所以不能直接new出乙個物件,可以通過該類的靜態方法獲得inetaddress的物件 public class ipdemo url 統一資源定位符,表示internet上某一資源的位址 public class urlde...
網路程式設計基礎API
網路位元組序 1.tcp ip協議規定,網路資料流應採用大端位元組序 0x12345678 小端儲存 78儲存在低位址 大端儲存 12儲存在低位址 網路位元組序和主機位元組序的轉換 include uint32 t htonl uint32 t hostlong uint16 t htons uin...