Linux服务器编程 基本API与概念

随笔2个月前发布 终生是学生
3 0 0

Linux服务器编程

基本API与概念

基本参数和结构体

协议族参数:PF_UNIX,PF_INET,PF_INET6;

地址族参数(sa_family_t):AF_UNIX,AF_INET,AF_INET6;

服务类型参数:

SOCK_STREAM流服务;SOCK_UGRAM数据报服务;
与SOCK_NONEBLOCK相与 非阻塞类型;与SOCK_CLOEXEC相与 fork子进程在子进程中关闭socket

错误信息

ECONNREFUSED:目标端口不存在
ETIMEOUT:连接超时

通用socket地址结构体:sockaddr_storge

sa_family;int_ss_align

专用socket地址结构体:sockaddr_un;sockaddr_in;sockaddr_in6

sin_family

sin_port(需用网络字节序表示):转换函数htons()htonl()

IPv4地址结构体:in_addr;IPv6地址结构体:in6_addr

内含地址值s_addr;sa_addr[16](需用网络字节序表示):转换函数inet_pton()

专用socket地址作为参数传入时需要强转为sockadrr类型

struct socketaddr_in address; //定义一个IPv4的socket专用地址
bzero(&address,sizeof(address))//将该结构体的前n个字节清零
address.sin_family=AF_INET    //为专用地址选择地址族参数
address.sin_port=htons(port)  //为专用地址端口号赋值(转化为网络字节序)
inet_pton(AF_INET,ip,&address.sin_addr)//为专用地址ipv4地址值赋值(转化为网络字节序)

常用socket文件描述符属性参数

SO_REUSEADDR:复用处于TIME_WAIT状态的socket
SO_RCVBUF和SO_SNDBUF:表示TCP接收缓冲区和发送缓冲区的大小
SO_RCVLOWAT和SO_SNDLOWAT:TCP接收缓冲区和发送缓冲区的低水位标志,当可读数据大于低水位时,IO复用系统调用告知应用程序可以读数据;当发送区中空闲空间大于低水位时,IO复用系统调用告知应用程序可以写数据,默认为1字节
SO_LINGER:通过传入一个linger类型的结构体,通过该结构体中的 l_onoffl_linger两个参数控制close()函数的具体行为

携带主机信息的hostent结构体:h_name主机名;h_aliases主机别名列表;h_addrtype地址族;h_length地址长度;h_addr_list按网络字节序列出的主机IP地址列表

携带服务信息的servent结构体:s_name服务名;s_aliases服务别名列表;s_port端口号;s_proto服务类型(tcp或udp或其他)

描述资源限制的rlimit结构:rlim_t类型:描述资源级别的整数类型;rlim_cur:指定资源的软限制(最好不要超过的限制);rlim_max:指定资源的硬限制(软限制的上限)

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...