inet_addr()是将一个点分制的IP地址(如192.168.0.1)转换为上述结构中需要的32位IP地址(0xC0A80001)。 填值的时候使用sockaddr_in结构,而作为函数(如socket, listen, bind等)的参数传入的时候转换成sockaddr结构就行了,毕竟都是16个字符长。 通常的用法是: int sockfd; struct sockaddr_in my_addr; sockfd...
上面是通用的socket地址,具体到Internet socket,用下面的结构,二者可以进行类型转换 struct sockaddr_in { short int sin_family; /* 地址族,AF_xxx 在socket编程中只能是AF_INET */ unsigned short int sin_port; /* 端口号 (使用网络字节顺序) */ struct in_addr sin_addr; /* 存储IP地址 4字节 */ ...
socketaddr和socketaddr_in简介 struct sockaddr {unsigned short sa_family; /* address family, AF_xxx */char sa_data[14]; /* 14 bytes of protocol address */};sa_family是地址家族,一般都是“AF_xxx”的形式。好像通常大多用的是都是AF_INET。sa_data是14字节协议地址。此数据结构用...
最典型的源、目的节点socket定义 对于源、目的地址和源、目的地址端口,需要建立两个socket变量 cliaddr绑定源地址和源端口 servaddr用于connect和sendto的设定目的地址和目的端口 struct sockaddr_in servaddr,cliaddr; create_socket(char *server_addr_string,unsigned int server_port) { 源socket赋值 bzero(&cliadd...
通常的做法是:填值的时候使用sockaddr_in结构,而作为函数(如bin, accept, connect等)的参数传入的时候转换成sockaddr结构就行了,毕竟都是16个字符长。 通常的用法是: int sockfd; struct sockaddr_in my_addr;//赋值时用这个结构 sockfd = socket(AF_INET, SOCK_STREAM, 0); ...
用来保存socket信息的。
sockaddr_in, sockaddr, in_addr区别 网络字节序和主机字节序 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。
#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ #define AF_IMPLINK 3 /* arpanet imp addresses */ #define AF_PUP 4 /* pup protocols: e.g. BSP */ #define AF_CHAOS 5 /* mit CHAOS protocols */ #define AF_NS 6 /* XEROX NS protocols */ ...
(sockaddr_in*)&addr 把addr地址(也即指针)转换为sockaddr_in类型.可以写成计算类型长度,试试就可知道了相关推荐 1TCP的socket编程里,bind函数里的(sockaddr_in*)&addr这个式子能够细细讲解一下吗,就像malloc函数前面(类型*)malloc,然后后面跟一个地址什么意思,还有一个问题就是为什么后面的第三个参数非要写成计...
1 socketaddr_in 中sin_family可以应对的值和它的含义 - chl - 博客园