Linux API
大端字节序:一个整数的高位字节存储在内存的低地址处,
小端字节序:整数的高位字节存储在内存高地址处
现代PC大多用小端字节序,所以小端字节序又被称为主机字节序
大端字节序采用网络字节序
上面这个是大小端字节序的转换
底下这几个是ip地址的 网络字节序和点分十进制的转换
新的IP地址转换函数 用于将IP地址和网络字节序进行转换。
命名socket 也就是把IP地址加端口号 bind给创建的socket
int main(int argc,int argv[])
{
const char *ip=argv[1];
int port=atoi(argv[2]);
int backlog=atoi(argv[3]); //这个很重要,将字符串类型转换 成为int 型
int sock =socket(PF_INET,SOCK_STREAM,0); //创建socket
struct sockaddr_in addr;
addr.sin_family=AF_INET;
inet_pton(AF_INET,ip,&addr.sin_addr);
addr.sin_port=htons(port); //给socket命名,也就是绑定的过程,端口号ip地址都需转换成网络字节序
int ret =bind(sock,(struct sockaddr* )&addr,sizeof(addr));
ret= listen(sock,backlog); //前面已经将字符串形式的backlog转换成为int型,所以这里就额可以直接使用
}
监听的多少,会有影响影响限制
也就是说在监听队列里面排队的只能有6个,也就是前面已经建立好的连接就从监听队列里面拿出去了。 所以不影响高并发的接受,,, 影响的只是等待连接的 监听队列中的个数
客户端发起连接 所用到的0函数调用
关闭socket 文件描述符
close 系统调用只是将文件描述符的应用计数减少1,, 只有当引用计数变成0,才真正关闭连接。
所以在fork之后,父子进程都需要使用close进行引用计数的减1.
而shutdown系统调用就可以立即终止 连接,,,,
对于socket的选项设置,来说。
setsockopt的系统调用函数位置是有讲究的。
(就是因为 监听socket和连接socket 这两个是不一样的 所以设置的时候,也要针对不同的socket设置相应的选项)
端口复用设置