问:网络编程接口中一些参数的含义是什么?sock=socket(PF_INET,SOCK_STREAM,0);socket参数详情intsocket(intdomain,inttype,intprotocol);参数含义域中使用的协议族信息socket类型套接字数据传输类型信息设备间通信协议信息socket()中的域参数(协议族)PF_INET→IPv4互联网协议族PF_INET6→IPv6互联网协议族PF_LOCAL→本地通信协议族PF_PACKET→底层数据收发协议PF_IPX→Novell专用协议(InternetpacketswitchingProtocol)...注:不同协议中的地址表示可能不同。地址类型必须与网络编程中的协议类型相匹配。socket()中的类型和协议参数type:用于指定协议类型SOCK_STREAM:流式数据(TCP)SOCK_UGRAM:消息式数据(UDP)协议:用于指定协议族遵循的具体协议。域和类型几乎可以唯一确定一个协议。因此,该参数通常为0,即:0代表指定的域和类型关于端口号和IP地址的默认协议端口号是一个2字节的数据(无符号)0-1024因为特定的端口是预定义的(分配给特定的application)IP地址是一个4字节的无符号地址族(可分离的IP地址分为网络ID和主机ID两部分4字节,那么如何区分网络ID和主机ID呢?IP地址和子网掩码是一起使用来区分网络标识符和主机标识符。子网掩码的表达形式也是4字节整数(无符号)。子网掩码用于从IP地址中提取网络标识符(&运算)In-深入理解子网掩码假设:子网掩码为M.N.P.Q,则子网中可用IP地址数n=(256-M)*(256-N)*(256-P)*(256-Q)例子:IP地址211.99.34.33,掩码255.255.2555.248,因此:211.99.34.33子网有8个IP地址子网地址:211.99.34.32广播地址:211.99.34.396可分配地址:211.99.34.33...211.99.34.38注:子网地址即网络标识ip地址211.99.34.33,掩码255.255.225.248说明211.99.34.33所在的子网有8个IP地址,8=2^3(2的3次方),所以Y=32-3=29可以表示为211.99.34.33/29【缩写形式】注:29为32位子网掩码的高位,计算IP地址为192.168.3.44,掩码为255.255.255.0问:什么是子网地址?广播地址是什么?有多少地址可用?什么是简明记法?答:子网地址:192.168.3.44广播地址:192.168.3.255可用地址:254[256-0(子网地址)-255(广播地址)]简明表示:192.168.3.44/24特殊地址0.0.0.0/0-保留,常用于表示“默认网络”127.0.0.0/8-Loopback地址,常用于本地软件发送测试255.255.255.255/32-广播地址网络编程中的地址类型intsock=0;structsockaddr_inaddr={0};sock=socket(PF_INET,SOCK_STREAM,0);//协议族,协议族if(sock==-1){pritnf("socketerror\n");返回;}addr.sin_family=AF_INET;//AddressFamily,地址族addr.sin_addr.s_addr=inet_addr("192.168.3.241");addr.sin_addr.port=htons(8899);if(connect(sock,(structsockaddr*)&addr,sizeof(addr))==-1){printf("连接错误\n");return-1;}问:(structsockaddr*)&addr强制类型转换不会有问题吗?地址数据类型分析structsockaddr可以理解为顶级地址类型的父类,其内存布局与子类相同相关函数#include
