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