sockaddr_in & sockaddr & in_addr 的区别

struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};

struct sockaddr_in {
short int sin_family; // Address family
unsigned short int sin_port; // Port number
struct in_addr sin_addr; // Internet address
unsigned char sin_zero[8]; // Same size as struct sockaddr
};

struct in_addr {
unsigned long s_addr; // that’s a 32-bit long, or 4 bytes
};

想来你是要进行网络编程,使用socket, listen, bind等函数。
你只要记住,填值的时候使用sockaddr_in结构,而作为函数的
参数传入的时候转换成sockaddr结构就行了,毕竟都是16个字符
长。 
 
这段代码使用了C语言来进行网络编程。以下是对代码中各行的解释: 1. `char info[256];`:声明了一个名为`info`的字符数组,长度为256,用于存储信息。 2. `socklen_t serv_len;`:声明了一个类型为`socklen_t`的变量`serv_len`,用于存储服务器地址的长度。 3. `vsoa_client_t *client;`:声明了一个指向`vsoa_client_t`类型的指针变量`client`,用于存储客户端的信息。 4. `struct sockaddr_in pos_addr, serv_addr;`:声明了两个类型为`struct sockaddr_in`的变量`pos_addr`和`serv_addr`,用于存储服务器和本地地址信息。 5. `struct timespec timeout = { 1, 0 };`:声明了一个类型为`struct timespec`的变量`timeout`,用于设置超时时间。 6. `bzero(&pos_addr, sizeof(struct sockaddr_in));`:将`pos_addr`变量所占内存空间清零。 7. `pos_addr.sin_family = AF_INET;`:设置`pos_addr`中的地址族为IPv4。 8. `pos_addr.sin_port = htons(5000);`:设置`pos_addr`中的端口号为5000,并通过函数`htons()`将端口号转换为网络字节序。 9. `pos_addr.sin_addr.s_addr = inet_addr("127.0.0.1");`:设置`pos_addr`中的IP地址为本地回环地址"127.0.0.1"。 10. `pos_addr.sin_len = sizeof(struct sockaddr_in);`:设置`pos_addr`的长度为`struct sockaddr_in`的长度。 11. `vsoa_position_lookup_server((struct sockaddr *)&pos_addr, sizeof(struct sockaddr_in));`:调用函数`vsoa_position_lookup_server()`,向服务器查询位置信息。将`pos_addr`的地址转换为`struct sockaddr`类型的指针,并传递给函数。 12. `vsoa_position_lookup(AF_INET, "vsoa.myserver.com", (struct sockaddr *)&serv_addr, &serv_len, NULL, &timeout);`:调用函数`vsoa_position_lookup()`,向名为"vsoa.myserver.com"的服务器查询位置信息。将服务器地址存储到`serv_addr`中,同时获取服务器地址的长度存储到`serv_len`中,并设置超时时间为1秒。 总之,这段代码使用了网络编程相关的函数和结构体来实现与服务器通信并查询位置信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值