sockaddr常用于bind、connect、recvfrom、sendto等函数的参数,指明地址信息,是一种通用的套接字地址。 sockaddr_in 是internet环境下套接字的地址形式。所以在网络编程中我们会对sockaddr_in结构体进行操作,使用sockaddr_in来建立所需的信息,最后使用类型转化就可以了。一般先把sockaddr_in变量赋值后,强制类型转换后传入...
sockaddr和sockaddr_in两结构体之间该如何转换呢?非常简单,且看: struct sockaddr_in server_addr_in; //定义一个sockaddr_in结构体 struct sockaddr server_addr; //定义一个sockaddr_in结构体 (struct sockaddr *)&server_addr_in //将sockaddr_in转换为sockaddr (struct sockaddr_in *)&server_addr //将socka...
一、sockaddr sockaddr在头文件#include <sys/socket.h>中定义,sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下: struct sockaddr { sa_family_t sin_family;//地址族 char sa_data[14]; //14字节,包含套接字中的目标地址和端口信息 }; 二、sockaddr_in sockaddr_in在头文件#include<netinet...
sockaddr和sockaddr_in包含的数据都是一样的,但他们在使用上有区别: 程序员不应操作sockaddr,sockaddr是给操作系统用的 程序员应使用sockaddr_in来表示地址,sockaddr_in区分了地址和端口,使用更方便。 一般的用法为: 程序员把类型、ip地址、端口填充sockaddr_in结构体,然后强制转换成sockaddr,作为参数传递给系统调用函数...
(struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; /* 字符数组sin_zero[8]的存在是为了保证结构体struct sockaddr_in的大小和结构体struct sockaddr的大小相等 */ }; struct sockaddr是通用的套接字地址,而struct sockaddr_in则是internet环境下套接字的...
sockaddr和sockaddr_in的长度相同,都是16字节,只是将IP地址和端口号合并到一起,用一个成员sa_data表示。要想给sa_data赋值,必须同时指明IP地址和端口号,例如"127.0.0.1:80",遗憾的是,没有相关函数将这个字符串转换成需要的形式,也就很难给sockaddr类型的变量赋值,所以使用sockaddr_in来代替。这两个结构体的长度...
sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针也可以指向 sockadd的结构体,并代替它。也就是说,你可以使用sockaddr_in建立你所需要的信息, 在最后用进行类型转换就可以了bzero((char*)&mysock,sizeof(mysock));//初始化 mysock结构体名 ...
sockaddr和sockaddr_in都是结构体,并且它们的功能都是用来处理网络通信的地址。网络中的地址主要有3个方面的属性: 1、地址类型例如是互联网协议第四版(ipv4)和互联网协议第六版(ipv6)。 2、IP地址,主要有5类分别是A类:(1.0.0.0-126.0.0.0),地址的网络号取值于1~126之间。一般用于大型网络。
sockaddr是在头文件 /usr/include/bits/socket.h 中定义的,如下: 而sockaddr_in是在头文件 /usr/include/netinet/in.h 中定义的,如下: 二者的占用的内存大小是一致的,因此可以互相转化,从这个意义上说,他们并无区别。 sockaddr_in 是internet环境下套接字的地址形式。所以在网络编程中我们会对sockaddr_in结.....