sockaddr_in问题【c++】

来源:百度知道 编辑:UC知道 时间:2024/05/31 03:24:55
struct sockaddr_in{
short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};

这个是在msdn里面查到的sockaddr_in结构体 可是我不明白的是
为什么在定义ip地址时要这样写client.in_addr.sin_addr.s_addr=inet_addr("172.0.0.1");
这个s_addr是什么呢?
还有
printf("Address: %s\n", inet_ntoa(sa.sin_addr));
这里为什么用sin_addr就可以了呢 不用接着写 in_addr了,吗

请各位帮帮忙吧 谢谢了我给50分

函数inet_addr的作用其实就是把"127.0.0.1"这样的字符串ip地址转换成0x0100007F这样的32位整数。

sin_addr其实是个4字节联合体,S_addr是它的int模式。

inet_ntoa接受的类型就是in_addr所以就直接传sin_addr了

---

另外楼上说的s和in其实分别代表socket和internet...

因为client.in_addr.sin_addr.s_addr=inet_addr("172.0.0.1"); 这里的 sin_add要代替in_addr就会改变里面的系统,in和Sin的S他是代表只读词
我不知道你看的明白没有