首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

server.sin_addr.s_addr = inet_addr("127.0.0.1")的有关问题

2012-08-14 
server.sin_addr.s_addr inet_addr(127.0.0.1)的问题sockaddr_in serverserver.sin_family AF_INET

server.sin_addr.s_addr = inet_addr("127.0.0.1")的问题
sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(8000);
server.sin_addr.s_addr = inet_addr("127.0.0.1"); //这一句不明白
connect(m_Socket, (sockaddr *)&server, sizeof(sockaddr_in));

server.sin_addr.s_addr 就没有s_addr这个对象,应该按下面这样写啊:
server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");这个应该才
对啊,为什么erver.sin_addr.s_addr是对的呢?C++里不是大小写敏感吗?
再就了就算不敏感的话s_addr也是S_un结构里的啊?不应该直接调用吧!
求解释!!!求真相!

[解决办法]
sockaddr_in(在netinet/in.h中定义):
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;//就是这句,你可能没看到这个结构定义
};


[解决办法]
在WINSOCK.H中定义如下
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { u_short s_w1,s_w2; } S_un_w;
u_long S_addr;
} S_un;
#define s_addr S_un.S_addr
[解决办法]
。。。。。。。。没什么区别的 
sockaddr_in这个结构怎么算 它都是那么大
只要把前面的 两个成员添加好了
后面随便你用什么方式填充都行
memset
memcpy都OK

热点排行