LINUX

网络编程主要函数介绍 8.2.1 socket 函数 int socket(int domain, int type,int protocol); 此函数用于创建一个套接字。 ⚫ domain 是网络程序所在的主机采用的通讯协族(AF_UNIX 和 AF_INET 等)。 ◼ AF_UNIX 只能够用于单一的 Unix 系统进程间通信,而 AF_INET 是针 对 Internet 的,因而可以允许远程通信使用。 ⚫ type 是网络程序所采用的通讯协议(SOCK_STREAM,SOCK_DGRAM 等)。 ◼ SOCK_STREAM 表明用的是 TCP 协议,这样会提供按顺序的,可靠,双 向,面向连接的比特流。 ◼ SOCK_DGRAM 表明用的是 UDP 协议,这样只会提不可靠,无连接的通 信。 ⚫ 关于 protocol,由于指定了 type,所以这个地方一般只要用 0 来代替就可 以了。 此函数执行成功时返回文件描述符,失败时返回-1,看 errno 可知道出错的 详细情况。 8.2.2 bind 函数 int bind(int sockfd, struct sockaddr *my_addr, int addrlen); 244 / 577 从函数用于将地址绑定到一个套接字。 ⚫ sockfd 是由 socket 函数调用返回的文件描述符。 ⚫ my_addr 是一个指向 sockaddr 的指针。 ⚫ addrlen 是 sockaddr 结构的长度。 sockaddr 的定义: struct sockaddr{ unisgned short as_family; char sa_data[14]; }; 不 过 由 于 系 统 的 兼 容 性 , 我 们 一 般 使 用 另 外 一 个 结 构 (struct sockaddr_in) 来代替。 sockaddr_in 的定义: struct sockaddr_in{ unsigned short sin_family; unsigned short sin_port; struct in_addr sin_addr; unsigned char sin_zero[8]; } 如果使用 Internet 所以 sin_family 一般为 AF_INET。 ⚫ sin_addr 设置为 INADDR_ANY 表示可以和任何的主机通信。 ⚫ sin_port 是要监听的端口号。 ⚫ bind 将本地的端口同 socket 返回的文件描述符捆绑在一起.成功是返回 0, 失败的情况和 socket 一样。 8.2.3 listen 函数 int listen(int sockfd,int backlog); 此函数宣告服务器可以接受连接请求。 ⚫ sockfd 是 bind 后的文件描述符。 ⚫ backlog 设置请求排队的最大长度。当有多个客户端程序和服务端相连时, 使用这个表示可以介绍的排队长度。 ⚫ listen 函数将 bind 的文件描述符变为监听套接字,返回的情况和 bind 一 样。 8.2.4 accept 函数 int accept(int sockfd, struct sockaddr *addr,int *addrlen); 服务器使用此函数获得连接请求,并且建立连接。 ⚫ sockfd 是 listen 后的文件描述符。 ⚫ addr,addrlen 是用来给客户端的程序填写的,服务器端只要传递指针就可 以了, bind,listen 和 acc

你可能感兴趣的:(linux,php,运维)