LinuxC常用数据结构及函数总结

 

Socket 信息数据结构:

 

struct sockaddr

{

       unsigned short sa_family;//地址族

       char sa_data[14];// 14字节的协议地址,包括socketIP地址和端口号

 

struct sockaddr_in

{

       short int sa_family;

       unsigned short int sin_port;

       struct in_addr sin_addr;//IP地址

       unsigned char sin_zero[8];//填充0即可

}

 

struct in_addr

{

       unsigned long int s_addr;//32IPv4地址,网络字节序

}

 

struct hostent

{

       char *h_name;

       char **h_aliases;//主机别名

       int h_addrtype;//IPv4一般用AF_INET即可

       int h_length;//主机IP地址字节长度32

       char **h_addr_list;

 

}#define h_addr h_addr_list[0]

 

常用函数:

 

 

unsigned long int inet_addr(const char *cp);

将网络地址字符串转换成网络用二进制,失败返回-1

 

int inet_aton(const char *cp,struct in_addr *inp);

address to net,cp网络地址字符串转换成二进制存于inp,成功返回非0,失败返回0

 

int inet_ntoa(struct in_addr in);

net to address,成功返回字符串指针,失败返回NULL

 

int socket(int domain,int type,int protocol);

domain指定何种地址类型(一般AF_INET),type一般用SOCK_STREAM(TCP)SOCK_DGRAM(UDP)protocol一般为0,成功返回socket处理代码,失败返回-1

 

int bind(int sockfd,struct sockaddr* my_addr,int addrlen);

用于给参数sockfd一个名称,该名称由参数my_addr指向sockaddr结构,成功返回0,失败返回1

 

int listen(int s,int backlog);

用于等待ssocket链接,backlog为最大链接要求,成功返回0,失败返回-1

 

int accept(int s,struct sockaddr* addr,int *addrlen);

接受参数ssocket链接,s必须经过bind()和listen()处理过,成功返回socket处理代码,失败返回-1

 

int send(int s,const void *msg,int len,unsigned int flags);

s为连接好的socketmsg为内容,len为长度,flag一般为0,成功返回送出的msg,失败返回-1

 

int sendto(int s,const void *msg,int len,unsigned int flags,const struct sockaddr *to,int tolen);

 

int recv(int s,void *buf,int len,unsigned int flags);

接受s传来的数据存在buf中,len为最大接受长度,flags一般为0

 

int recvfrom(int s,void *buf,int len,unsigned int flags,struct sockaddr *from,int *fromlen); 

 

其他

 

pid_t fork(void);

成功返回0(子进程中)或者子进程号(父进程中),错误返回-1

 

int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);

pthread_t *restrict tidp:要创建的线程ID指针

const pthread_attr_t *restrict attr:创建线程的属性,一般为NULL

void *(*start_rtn)(void):要执行的返回值是void的指针函数

void *restrict argstart_rtn的行参

 

纯手打,转载复制等请声明作者~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值