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

hahacker 2012-06-22 11:55:09
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结构里的啊?不应该直接调用吧!
求解释!!!求真相!
...全文
7830 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjtuzhw 2012-06-22
  • 打赏
  • 举报
回复
在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
hdg3707 2012-06-22
  • 打赏
  • 举报
回复
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;//就是这句,你可能没看到这个结构定义
};

sryteawrt 2012-06-22
  • 打赏
  • 举报
回复
。。。。。。。。没什么区别的
sockaddr_in这个结构怎么算 它都是那么大
只要把前面的 两个成员添加好了
后面随便你用什么方式填充都行
memset
memcpy都OK

18,358

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧