ip地址与unsigned long 互换问题

rollstonelu 2002-12-10 09:22:50
char *IpAddr="192.168.0.11";
char *NetMask="255.255.255.0";
unsigned long NetNumber11=inet_addr(IpAddr11)&inet_addr(NetMask);


就是怎么把NetNumber11和NetNumber12返回成"192.168.0.0"格式?
是不是有这样的函数?
...全文
351 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
icansaymyabc 2002-12-11
  • 打赏
  • 举报
回复
来晚了
yanhuahui 2002-12-11
  • 打赏
  • 举报
回复
呵呵,晚了我

wltsui 2002-12-11
  • 打赏
  • 举报
回复
关于 prettywolf(多情自古空余,此恨绵绵无绝期)的结构看看这个就知道了:

http://expert.csdn.net/Expert/topic/1178/1178698.xml?temp=.6877405


高, 用联合,!!
rollstonelu 2002-12-11
  • 打赏
  • 举报
回复
to: duebbin(xh)
根据你的提示做到了:
公开给大家:
char *IpAddr="192.168.0.11";
char *NetMask="255.255.255.0";
unsigned long NetNumber=inet_addr(IpAddr)&inet_addr(NetMask);
struct in_addr inaddr;
inaddr.S_un.S_addr=NetNumber;
printf("%s\n",inet_ntoa(inaddr));
duebbin 2002-12-10
  • 打赏
  • 举报
回复
好象没有那个结构~~
to prettywolf(多情自古空余,此恨绵绵无绝期)

一般地址结构都是SOCKADDR和sockaddr 一个属于mfc一个是api
struct sockaddr {
unsigned short sa_family;
char sa_data[14];
};
先把它转换为
struct sockaddr_in{
short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
然后用
SOCKADDR lpSockAddr;
.........
CString rPeerAddress = inet_ntoa(((struct sockaddr_in*)&lpSockAddr)->sin_addr);
即可
rollstonelu 2002-12-10
  • 打赏
  • 举报
回复
偶要回家了
没时间看了
明天再来散分

多谢各位!!!!
rollstonelu 2002-12-10
  • 打赏
  • 举报
回复
to prettywolf(多情自古空余,此恨绵绵无绝期)
typedef enume ip{
char ipaddr[4];
unsigned long ip;
}ipchange;
哪来的?怎么查不着
望解释一下

to: qrlvls(怜松)
呵呵 没问题 解决偶这么大难题
duebbin 2002-12-10
  • 打赏
  • 举报
回复
我是答的第三问
this is a sample
BOOL CGServer::GetPeerName(CString& rPeerAddress, UINT& rPeerPort)
{
SOCKADDR_IN sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr));

int nSockAddrLen = sizeof(sockAddr);
BOOL bResult = getpeername(m_hSocket,(SOCKADDR*)&sockAddr, &nSockAddrLen);
if (bResult)
{
rPeerPort = ntohs(sockAddr.sin_port);
rPeerAddress = inet_ntoa(sockAddr.sin_addr);
}
return bResult;
}
qrlvls 2002-12-10
  • 打赏
  • 举报
回复
不是只有一点,拖住往下拉就可以看到了(有时是这样的),给分!

对于第二问,没有BUG,给分!

对于第三问不知道啊。
prettywolf 2002-12-10
  • 打赏
  • 举报
回复
typedef enume ip{
char ipaddr[4];
unsigned long ip;
}ipchange;
ipchange.ip=NetNumber11;
char buff[16]={0};
sprintf(buff,"%d.%d.%d.%d",ipchange.ipaddr[0],....);
基本上是这样的,可能语法有些错误。
rollstonelu 2002-12-10
  • 打赏
  • 举报
回复
楼上兄弟是不是有点文不对题?
duebbin 2002-12-10
  • 打赏
  • 举报
回复
The inet_ntoa function converts an (Ipv4) Internet network address into a string in Internet standard dotted format.
char FAR * inet_ntoa(
struct in_addr in
);

in_addr
The in_addr structure represents a host by its Internet address.

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;
};
Members
S_un_b
Address of the host formatted as four u_chars.
S_un_w
Address of the host formatted as two u_shorts.
S_addr
Address of the host formatted as a u_long.
rollstonelu 2002-12-10
  • 打赏
  • 举报
回复
怎么只看到一点?论坛有bug?
重来
char *IpAddr="192.168.0.11";
char *NetMask="255.255.255.0";
unsigned long NetNumber11=inet_addr(IpAddr11)&inet_addr(NetMask);

怎么把NetNumber11转化成"192.168.0.0"这样的格式?
有这样的函数吗?

18,356

社区成员

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

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