在上篇文章中我们提到了UDP,TCP有关函数,并知道了一个重要的结构体struct sockaddr。想要实现通信首先要知道通信端的地址,所以首先了解一下IPv4套接字地址结构体。
//IPv4 套接字地址结构体,用来存放地址信息
struct sockaddr_in //此结构体大小是16字节
{
sa_family_t sin_family; //2 字节 协议族(AF_INET、AF_INET6、PF_PACKET)
in_port_t sin_port; //2 字节 端口
struct in_addr sin_addr; //4 字节 地址
char sin_zero[8] //8 字节 必须为0
};
struct in_addr
{
in_addr_t s_addr; //4 字节
};
注意 : 为了使不同格式地址能被传入套接字函数,地址须要强制转换成通用套接字地址结构。
//此结构体大小是16字节,函数参数的类型是此结构体,但其没有表示地址信息的成员变量,
//所以用IPv4结构体定义,强转成这个就可以了。(关键:大小一样)
struct sockaddr
{
sa_family_t sa_family; // 2 字节
char sa_data[14]; //14 字节
}; //通用套接字地址结构体,一般用来强转IPv4结构体
所以现在就是怎样给IPv4结构体赋值的问题了。
例子 :
//定义服务器IPv4地址结构(假设服务器的IP10.0.110.110 port=8080)
struct sockaddr_in server_addr; //定义变量
//memset(&server_addr,0,sizeof(server_addr)); //清空1
bzero(&server_addr,sizeof(server_addr)); //清空2
//给成员变量赋值
server_addr.sin_family = AF_INET; //ipv4协议
server_ad
版权声明:本文为xjpyinxll原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。