bzero
将目标字节串中制定数目的字节置为0
inet_pton
int inet_pton(int family,const char *strptr,void *addrptr)
p(presentation)代表表达,n(numeric)代表数值
int_pton将ip地址从表达格式转换为数值格式,即将“点分十进制”转化为“二进制整数”
功能:该函数将我们输入的ip地址转换为能在网络中使用的二进制值
sendto和recvfrom
ssize_t recvfrom(int sockfd,void *buff,ssize_t nbytes,int flags,struct sockaddr *from,socklen_t *addrlen)
ssize_t sendto(int sockfd,void *buff,ssize_t nbytes,int flags,struct sockaddr *from,socklen_t *addrlen)
参数:描述符 读写指针 读写字节数 调用操作方式 目的套接字地址 目的套接字所指地址长度
sendto的最后两个参数类似于connect的最后两个参数,调用时填入数据报将发往的协议地址
recvfrom的最后两个参数类于accept的最后两个参数,返回时数据报内容告诉我们是谁发送了数据报
socket
int socket(int family,int type,int protocol)
功能:指定期望的通信协议类型
参数:family指明协议族,type指明套接字类型,protocol协议类型常值,可设为0(默认)
返回值:成功返回非负描述符,出错返回-1
connect
int connect(int sockfd,const struct sockaddr *servaddr,socklen_t addrlen)
功能:建立与TCP服务的连接
参数:sockfd是socket返回的套接字描述符,第二三个参数分别是一个指向套接字地址结构的指针和该结构的大小。
返回值:成功则为0,出错为-1
bind
int bind(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen)
功能:将一个本地协议地址赋予一个套接字
参数:sockfd是socket返回的套接字描述符,myaddr是一个指向特定于协议的地址机构指针,addrlen是该地址结构的长度
返回值:成功则为0,出错则为-1
listen
int listen(int sockfd,int backlog)
功能:由socket创建的套接字是一个主动套接字,默认行为是要调用connect发起连接的,这应当是客户端的行为。因此在服务端,我们使用listen将一个未连接的主动套接字转换为一个被动套接字,用来监听套接字上可能到达的连接。
参数:sockfd是socket返回的套接字描述符,backlog规定了内核应该为相应套接字排队的最大连接个数
返回值:成功返回0,失败返回-1
accept
int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen)
功能:
参数:sockfd是socket返回的套接字描述符,cliaddr和addrlen用于接受已连接客户端的协议地址
返回值:成功返回非负描述符,出错返回-1
signal
功能:声明信号处理函数
参数:信号名,指向函数的指针
waitpid
功能:处理已终止的子进程
参数:进程ID(-1代表等待任何子进程) 子进程的结束状态值 附加选项
返回值:成功返回进程ID,出错返回0或-1
待监测的描述符个数为最大描述符+1(因为描述符从0开始计数)
中间三个参数指定我们要让内核监测的读,写和异常的描述符
描述符的操作通过以下四个宏实现:
void FD_ZERO(fd_set *fdset); //clear all bits in fdset
void FD_SET(int fd,fd_set *fdset); //turn on the bit for fd in fdset
void FD_CLR(int fd,fd_set *fdset); //turn off the bit for fd in fdset
int FD_ISSET(int fd,fd_set *fdset); //is the bit for fd on in fdset
等待时间为NULL代表永远等待下去,仅在有一个描述符准备好I/O时才返回。
shutdown
参数:套结字 关闭方式
关闭方式SHUT_WR 关闭连接写的一半,当前iu在套结字发送缓冲区的数据被发送掉,后面紧跟TCP的正常连接终止序列。进程不能在对这样的套结字调用任何的写函数
功能:创建线程,类似于fork
参数:线程id 线程属性 处理函数 函数参数
返回值:成功返回0,出错返回为正的Exxx值
int pthread_join(pthread_t *tid,void **status);
功能:等待一个给定的线程终止,类似与waitpid
参数:线程id 状态
返回值:成功返回0,出错返回为正的Exxx值
pthread_t pthread_self(void);
功能:返回线程自身id
返回值:线程id
int pthread_detach(pthread_t tid);
功能:线程后台化
参数:线程id
返回值:成功返回0,出错返回为正的Exxx值
void pthread_exit(void *status);
功能:线程终止
参数:状态
互斥锁:
int pthread_mutex_lock(pthread_mutex_t *mptr);
int pthread_mutex_unlock(pthread_mutex_t *mptr);
功能:防止同时访问某个共享变量
返回值:成功返回0,出错返回为正的Exxx值
如果某个互斥锁变量是静态分配的,我们就必须将他初始化为常值PTHREAD-MUTEX-INITIALIZER
条件变量:
int pthread_cond_wait(pthread_cond_t *cptr,pthread_mutex_t *mptr);
int pthread_cond_signal(pthread_cond_t *cptr);
功能:在等待某个条件发生期间能让程序进入睡眠
返回值:成功返回0,出错返回为正的Exxx值
将目标字节串中制定数目的字节置为0
inet_pton
int inet_pton(int family,const char *strptr,void *addrptr)
p(presentation)代表表达,n(numeric)代表数值
int_pton将ip地址从表达格式转换为数值格式,即将“点分十进制”转化为“二进制整数”
功能:该函数将我们输入的ip地址转换为能在网络中使用的二进制值
sendto和recvfrom
ssize_t recvfrom(int sockfd,void *buff,ssize_t nbytes,int flags,struct sockaddr *from,socklen_t *addrlen)
ssize_t sendto(int sockfd,void *buff,ssize_t nbytes,int flags,struct sockaddr *from,socklen_t *addrlen)
参数:描述符 读写指针 读写字节数 调用操作方式 目的套接字地址 目的套接字所指地址长度
sendto的最后两个参数类似于connect的最后两个参数,调用时填入数据报将发往的协议地址
recvfrom的最后两个参数类于accept的最后两个参数,返回时数据报内容告诉我们是谁发送了数据报
memcmp
比较两个任意的字节串,相同返回0
socket
int socket(int family,int type,int protocol)
功能:指定期望的通信协议类型
参数:family指明协议族,type指明套接字类型,protocol协议类型常值,可设为0(默认)
返回值:成功返回非负描述符,出错返回-1
connect
int connect(int sockfd,const struct sockaddr *servaddr,socklen_t addrlen)
功能:建立与TCP服务的连接
参数:sockfd是socket返回的套接字描述符,第二三个参数分别是一个指向套接字地址结构的指针和该结构的大小。
返回值:成功则为0,出错为-1
bind
int bind(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen)
功能:将一个本地协议地址赋予一个套接字
参数:sockfd是socket返回的套接字描述符,myaddr是一个指向特定于协议的地址机构指针,addrlen是该地址结构的长度
返回值:成功则为0,出错则为-1
listen
int listen(int sockfd,int backlog)
功能:由socket创建的套接字是一个主动套接字,默认行为是要调用connect发起连接的,这应当是客户端的行为。因此在服务端,我们使用listen将一个未连接的主动套接字转换为一个被动套接字,用来监听套接字上可能到达的连接。
参数:sockfd是socket返回的套接字描述符,backlog规定了内核应该为相应套接字排队的最大连接个数
返回值:成功返回0,失败返回-1
accept
int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen)
功能:
参数:sockfd是socket返回的套接字描述符,cliaddr和addrlen用于接受已连接客户端的协议地址
返回值:成功返回非负描述符,出错返回-1
signal
功能:声明信号处理函数
参数:信号名,指向函数的指针
waitpid
功能:处理已终止的子进程
参数:进程ID(-1代表等待任何子进程) 子进程的结束状态值 附加选项
返回值:成功返回进程ID,出错返回0或-1
select
功能:该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定时间后才唤醒它。
参数:待监测的描述符个数 读集 写集 异常集 等待时间待监测的描述符个数为最大描述符+1(因为描述符从0开始计数)
中间三个参数指定我们要让内核监测的读,写和异常的描述符
描述符的操作通过以下四个宏实现:
void FD_ZERO(fd_set *fdset); //clear all bits in fdset
void FD_SET(int fd,fd_set *fdset); //turn on the bit for fd in fdset
void FD_CLR(int fd,fd_set *fdset); //turn off the bit for fd in fdset
int FD_ISSET(int fd,fd_set *fdset); //is the bit for fd on in fdset
等待时间为NULL代表永远等待下去,仅在有一个描述符准备好I/O时才返回。
shutdown
参数:套结字 关闭方式
关闭方式SHUT_WR 关闭连接写的一半,当前iu在套结字发送缓冲区的数据被发送掉,后面紧跟TCP的正常连接终止序列。进程不能在对这样的套结字调用任何的写函数
线程相关
int pthread_create(pthread_t *tid,const pthread_attr_t *attr,void *(func)(void *),void *arg);功能:创建线程,类似于fork
参数:线程id 线程属性 处理函数 函数参数
返回值:成功返回0,出错返回为正的Exxx值
int pthread_join(pthread_t *tid,void **status);
功能:等待一个给定的线程终止,类似与waitpid
参数:线程id 状态
返回值:成功返回0,出错返回为正的Exxx值
pthread_t pthread_self(void);
功能:返回线程自身id
返回值:线程id
int pthread_detach(pthread_t tid);
功能:线程后台化
参数:线程id
返回值:成功返回0,出错返回为正的Exxx值
void pthread_exit(void *status);
功能:线程终止
参数:状态
互斥锁:
int pthread_mutex_lock(pthread_mutex_t *mptr);
int pthread_mutex_unlock(pthread_mutex_t *mptr);
功能:防止同时访问某个共享变量
返回值:成功返回0,出错返回为正的Exxx值
如果某个互斥锁变量是静态分配的,我们就必须将他初始化为常值PTHREAD-MUTEX-INITIALIZER
条件变量:
int pthread_cond_wait(pthread_cond_t *cptr,pthread_mutex_t *mptr);
int pthread_cond_signal(pthread_cond_t *cptr);
功能:在等待某个条件发生期间能让程序进入睡眠
返回值:成功返回0,出错返回为正的Exxx值