网络编程函数总结

  • 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)。
    • 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)  评论(0编辑  收藏  举报