网络编程函数总结
- htonl()函数:将u_long类型的主机字节序转换为网络字节序。
- htons()函数:将u_short类型的主机字节序转换为网络字节序。
- ntohl()函数:将u_long类型的网络字节序转换为主机字节序。
- ntohs()函数:将u_short类型的网络字节序转换为主机字节序。
- socket()函数:创建套接字,int socket(int domain, int type, int protocol)。
- domain:协议族
- type:套接字类型
- protocol:协议号,一般为0
- connect()函数:与服务器建立TCP连接,int connect(int sockfd,struct sockaddr* serv_addr, int addrlen)。
- sockfd:套接字描述符
- serv_addr:指向sockaddr的指针,获取服务器IP和端口
- addrlen:默认可填sizeof(struct sockaddr)
- bind()函数:服务器绑定本地端口,int bind(int sockfd, struct sockaddr *my_addr, int addrlen)。
- sockfd:套接字描述符
- my_addr:指向数据结构sockaddr的指针,获取本地开放的IP和端口
- addrlen:默认可填sizeof(struct sockaddr)
- listen()函数:使套接字变成监听套接字,int listen(int sockfd, int backlog)。
- sockfd:套接字描述符
- backlog:队列中所允许连接的个数
- accept()函数:服务器等待接收连接的函数,int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)。
- sockfd:套接字描述符
- addr:用于回传的指向数据结构sockaddr的指针
- addrlen:默认可填sizeof(struct sockaddr)
- send()函数:TCP的连接中一端向另一端发送数据,ssize_t send(int s, const void *buf, size_t len, int flags)。
- s:发送数据的套接字描述符
- buf:传输数据所在的缓冲区
- len:发送数据的字节数,strlen(buf)
- flags:指明调用执行方式,一般设置为0
- sendto()函数:UDP的连接中一端向另一端发送数据,int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen)。
- sockfd:套接字描述符
- msg:传输数据所在的缓冲区
- len:指明缓冲区的长度,strlen(msg)
- flags:指明调用执行方式,一般设置为0
- to:指向数据结构sockaddr的指针,获取对方的IP和端口
- tolen:默认可填sizeof (struct sockaddr)
- recv()函数:TCP的连接中一端向另一端接收数据,int recv(int s, void *buf, int len, unsigned int flags)。
- s:发送数据的套接字描述符
- buf:接收数据所在的缓冲区
- len:指明缓冲区的长度,strlen(buf)
- flags:指明调用执行方式,一般设置为0
- recvfrom()函数:UDP的连接中一端向另一端接收数据,int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen)。
- sockfd:套接字描述符
- buf:接收数据所在的缓冲区
- len:指明缓冲区的长度,strlen(buf)
- flags:指明调用执行方式,一般设置为0
- from:指向数据结构sockaddr的指针,获取对方的IP和端口
- romlen:默认可填sizeof (struct sockaddr)
- close()函数:关闭套接字,int close(sockfd)。
- fork()函数:用于新进程的创建,int fork()。
- 调用成功在子进程中返回0,在父进程中返回子进程号(进程ID),调用不成功,在父进程中返回-1。
- getpid()函数:返回当前进程的进程号。
- getppid()函数:返回当前进程的父进程号。
- wait()函数:等待子进程结束从而清除僵尸程序,调用成功返回被收集的子进程ID,调用失败则返回-1,pid_t wait(int *status)。
- status:通过调用以下宏来判别子进程的结束情况:
- WIFEXITED(status):子进程正常结束则返回非0值
- WEXITSTATUS(status):子进程正常结束则获得子进程由exit()返回的结束代码
- WIFSIGNALED(status):子进程因为信号而结束则返回非0值
- WTERMSIG(status):子进程因为信号结束则可获得子进程的中止信号代码
- WIFSTOPPEN(status):子进程处于暂停执行状态返回非0值
- WSTOPSIG(status):子进程处于暂停状态则可获得引发子进程暂停的信号代码
- waitpid()函数:正常返回时,waitpid返回收集到的子进程的进程ID;设置了选项而没有则返回0;调用出错返回-1,pid_t waitpid(pid_t pid, int *status, int options)。
- pid:子进程号,当pid取不同的值时有不同的意义:
- pid>0时,只等待进程ID等于pid的子进程
- pid=-1时,等待任何一个子进程退出,此时waitpid()和wait()的作用完全等同
- pid=0时,等待同一个进程组中的任何子进程
- pid<-1时,等待一个指定进程组中的任何子进程,这个进程组的ID等于pid的绝对值
- status:用来保存被收集进程退出时的一些状态
- options:提供选项控制waitpid(),若不想设置参数为0
- WUNTRACED,当子进程处于暂停状态,waitpid()将马上返回
- WNOHANG,即使没有子进程退出,waitpid()也将立即返回
- 0,waitpid()会像wait()那样阻塞父进程,直到所等待的子进程退出
- signal()函数:依参数signum 指定的信号编号来设置该信号的处理函数,void (signal(int signum,void( handler)(int)))(int)。
- signum:指明了signal()函数所要处理的信号编号
- handler:描述了与信号关联的动作,它可取以下三种值:
- 一个参数类型为int返回值类型为void的函数地址:当接收到一个信号编号为signum的信号时,进程就执行handler 所指定的函数
- SIGIGN:这个符号表示忽略该信号,执行了相应的signal()调用后,进程会忽略信号编号为signum的信号
- SIGDFL:这个符号表示恢复系统对信号的默认处理
- pthread_create()函数:创建新的线程,创建成功返回0,int pthread_create(pthread_t *thread, pthread_attr_t *attr, void (start_routine) (void *), void * arg)。
- thread:所创建的线程的标识符
- attr:是pthread_attr_t结构体指针,所指向的结构中的元素分别用于标识线程的运行属性
- start_routine:用于指向线程的线程体函数,该线程体函数所执行的操作即为该线程所执行的操作
- arg:是用于传递给线程体函数的参数
- pthread_attr_init()函数:对pthread_attr_t结构体进行初始化,int pthread_attr_init(pthread_attr_t *attr)。
- attr:是pthread_attr_t结构体指针,指向的结构中的元素分别用于标示线程的运行属性
- pthread_attr_destroy()函数:对其去除初始化的函数,int pthread_attr_destroy(pthread_attr_t *attr)。
- attr:是pthread_attr_t结构体指针,指向的结构中的元素分别用于标示线程的运行属性
- pthread_join()函数:等待创建的线程结束
- pthread_attr_setdetachstate()函数:设置线程的分离状态,int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)。
- pthread_attr_getdetachstate()函数:获取线程的分离状态,int pthread_attr_getdetachstate(const pthread_attr_t * attr, int *detachstate)。
- attr:是pthread_attr_t结构体指针
- detachstate:线程的分离状态属性:
- PTHREAD_CREATE_DETACHED,则该线程将以分离状态运行
- PTHREAD_CREATE_JOINABLE,则该线程将以默认的非分离状态运行
- pthread_attr_setinheritsched()和函数pthread_attr_getinheritsched()分别用来设置和获取线程的继承性
- int pthread_attr_getinheritsched(const pthread_attr_t *attr, int *inheritsched)
- int pthread_attr_setinheritsched(pthread_attr_t *attr, int inheritsched)
- attr:是pthread_attr_t结构体指针
- inheritsched:线程的继承性
- PTHREAD_INHERIT_SCHED表示新线程将继承创建自己的父线程的调度策略和参数
- PTHREAD_EXPLICIT_SCHED表示使用在schedpolicy和schedparam属性中显式设置的调度策略和参数
- pthread_attr_setschedpolicy()和函数pthread_attr_getschedpolicy()分别用来设置和得到线程的调度策略
- int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy)
- int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy)
- attr:是pthread_attr_t结构体指针
- policy:为线程的调度策略,主要包括先进先出(SCHED_FIFO)和轮循(SCHED_RR)
- pthread_attr_setschedparam()和函数pthread_attr_getschedparam()分别用来设置和得到线程的调度参数
- int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param)
- int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param)
- attr:是pthread_attr_t结构体指针
- param:是sched_param结构体指针,所指向的结构中的元素sched_priority用于标识线程运行的优先权值
- sched_get_priority_max()函数和sched_get_priority_min()函数来分别得到系统支持的最大和最小线程优先权值
- int sched_get_priority_max(int policy)
- int sched_get_priority_min(int policy)
- pthread_attr_setscope()和函数pthread_attr_getscope()分别用来设置和得到线程的作用域
- int pthread_attr_setscope(pthread_attr_t *attr, int scope)
- int pthread_attr_getscope(const pthread_attr_t *attr, int *scope)
- attr:是pthread_attr_t结构体指针
- scope:是作用域(在pthread_attr_setscope()函数中)或指向作用域的指针(在pthread_attr_getscope()函数中)
- pthread_attr_setguardsize()和函数pthread_attr_getguardsize()分别用来设置和得到线程的堆栈保护区(警戒堆栈)的大小
- int pthread_attr_getguardsize(const pthread_attr_t *restrict attr, size_t *restrict guardsize)
- int pthread_attr_setguardsize(pthread_attr_t *attr, size_t *guardsize)
- attr:是pthread_attr_t结构体指针
- guardsize:控制着线程堆栈末尾之后以避免堆栈溢出的堆栈保护区(扩展内存)的大小
- pthread_attr_setstackaddr()和函数pthread_attr_getstackaddr()分别用来设置和得到线程堆栈的地址
- int pthread_attr_getstackaddr(const pthread_attr_t *attr, void **stackaddr)
- int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr)
- attr:是pthread_attr_t结构体指针
- stackaddr:线程的堆栈地址
- pthread_attr_setstacksize()和函数pthread_attr_getstacksize()分别用来设置和得到线程堆栈的大小
- int pthread_attr_getstacksize(const pthread_attr_t *restrict attr, size_t *restrict stacksize)
- int pthread_attr_setstacksize(pthread_attr_t *attr , size_t *stacksize)
- attr:是pthread_attr_t结构体指针
- stacksize:线程堆栈的大小
- pthread_exit()函数:实现显式终止,int pthread_exit(void * value_ptr)。
- value_ptr:线程返回值指针,该返回值将被传给另一个线程,另一个线程则可通过调用pthread_join()函数来获得该值
- thread_join()函数:实现隐式终止,int pthread_join(pthread_t thread,void **value_ptr)。
- thread:等待终止的线程的线程标识符
- value_ptr:如果value_ptr不为NULL,那么线程thread的返回值存储在该指针指向的位置
posted on
2020-11-07 21:58
千丶颜
阅读(
281)
评论()
编辑
收藏
举报