高性能服务器1 socket基础API

您所在的位置:网站首页 中国有多少种蛇图片及名字 高性能服务器1 socket基础API

高性能服务器1 socket基础API

#高性能服务器1 socket基础API| 来源: 网络整理| 查看: 265

socket API socket基础API专用socket地址IP地址点分与二进制转换服务端步骤客户端步骤数据读写获取地址信息读取设置socket属性gethostbyname 和 gethostbyaddrgetservbyname 和 getservbyportgetaddrinfogetnameinfo

本文参考

《 Linux高性能服务器编程》

socket基础API

字节序分为大端字节序(big endian)和小端字节序(ittle endian)。大端字节序是指一个整数的高位字节(23 ~ 31 bit)存储在内存的低地址处,低位字节(0~7bit) 存储在内存的高地址处。小端字节序则是指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处。 在这里插入图片描述 htonl “host to network long” 长整型主机字节序转换成网络字节序 长整型转换IP地址,短整型转换端口号

专用socket地址

在这里插入图片描述

IP地址点分与二进制转换

在这里插入图片描述

inet_addr 点分十进制字符串 >> 网络字节序,失败返回INADDR_NONE。 inet_aton 与 inet_addr 函数作用相同,转换结果储存到inp指向的地址,成功返回1,失败返回0。 inet_ntoa 网络字节序 >> 点分十进制,返回结果地址。 inet_pton 字符串 >> 网络字节序 inet_ntop 与 inet_pton 相反 cnt 为存储单元大小

服务端步骤

创建socket: int socket(int domain, int type, int protocol);

socket与IP地址绑定: int bind(int sockfd, const struct sockaddr* my_addr, socklen_t addrlen);

监听socket: int listen(int sockfd, int backlog);

接受连接:int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

客户端步骤

发起连接:int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);

关闭连接:int close(int fd); 立即终止连接:int shutdown(int sockfd, int howto);

数据读写

在这里插入图片描述

获取地址信息

在这里插入图片描述

读取设置socket属性

在这里插入图片描述

option_name参数:

在这里插入图片描述

gethostbyname 和 gethostbyaddr

gethostbyname 函数根据主机名称获取主机的完整信息,gethostbyaddr 函数根据IP地址获取主机的完整信息。 在这里插入图片描述 返回hostent 结构体 在这里插入图片描述

getservbyname 和 getservbyport

getservbyname 和 getservbyport 分别根据名称和端口获取某个服务的完整信息。 在这里插入图片描述 返回servent 结构体类型指针 在这里插入图片描述

getaddrinfo

getaddrinfo 既能通过主机号获得IP地址,也能通过服务名获得端口号。

在这里插入图片描述

返回值为addrinfo 结构体 在这里插入图片描述

getnameinfo

getnameinfo 能通过socket 地址同时获得以字符串表示的主机名和服务名。

在这里插入图片描述

flags 参数: 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3