linux_C_Socket

最近學習linux下的網絡編程socket,感覺函數比較多,流程繁瑣,所以坐下筆記 吧。

函數 用法
int socket(int domain,int type,int protocol) 創建通信接口,返回文件描述符,domain的主要取值:AF_UNIX,type代表網絡採用的通訊協議,TCP->SOCK_STREAM,UDP->SOCK_DGRAM,因爲指定type,所以protocol一般0,
int bind(int sockfd,struct sockaddr *my_addr,int addrlen) 綁定文件描述符和對應的數據結構,sockfd 爲socket的返回文件描述符,sockaddr的具體在下面
int listen(int sockfd,int backlog) sockfd 爲文件描述符,backlog爲排隊最大長度
int accept(int sockfd,struct sockaddr *addr,int *addrlen) addr是用來給客戶端的程序填寫,服務器只傳指針接收,此函數調用時候,服務器會阻塞直到客戶端發出連接,返回文件描述符
int connect(int sockfd,struct sockaddr *serv_addr,int addrlen) connect是客戶端用來連接服務端的,serv_addr儲存服務器連接信息,sin_addr是服務端的地址
int recvfrom(int sockfd,void *buf,int len,unsigned int flags,struct sockaddr *from,int *fromlen) buf爲接收緩存區,from儲存發送來源的信息,若對信息來源不感興趣,可以設爲NULL
int sendto(int sockfd,const void *msg,int len,unsigned int flags,struct sockaddr *to,int len) 同上,這個是發送,這倆個函數是基於UDP的
int shutdown(int sockfd,int howto) close只關閉一個方向,howto=0,系統關閉讀通道,但可以繼續寫,1,關閉寫通道,可以讀,3,關閉讀寫通道

h->host n->network s->short l->long 將網絡上的數據轉換爲本機數據

unsigned long htonl(unsigned long hostlong)
unsigned short htons(unsigned short hostshort)
unsigned long ntohl(unsigned long netlong)
unsigend short ntohs(unsigned short netshort)

這是個函數經常從網絡字符換換爲本機字符

struct sockaddr_in{
unsigned short sin_faily;//AF_INET->Internet INADDR_ANY->any
unsigned short sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
}

bind,listen,accept 是服務端的函數,

以上就是基本的socket編程的函數,希望日後能熟練運用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章