怎样将这个结构的ip和port内容加入列表中?

virsnow 2005-04-04 01:54:21
typedef struct INFO
{
BOOL m_bUsed;
int m_IP;
unsigned short m_Port;
}

char ip[50];
int port;
List.AddString(ip);
List.AddString(port);
怎样将这个结构的内容加入列表中?

谢谢!
...全文
173 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
virsnow 2005-04-04
  • 打赏
  • 举报
回复

我那样是可以连接上的!

再上感谢你啦!
结贴!

好多星星哟!羡慕!!!
晨星 2005-04-04
  • 打赏
  • 举报
回复
我觉得
int ip=ntohl(inet_addr(IP));
直接
int ip=inet_addr(IP);
就可以了。

severAddr.sin_addr.S_un.S_addr = htonl(pINFO->m_IP);
这里不要改。

没有试试,你试试看。
晨星 2005-04-04
  • 打赏
  • 举报
回复
这样connect成功了吗?
virsnow 2005-04-04
  • 打赏
  • 举报
回复
是这样的:
CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
CString str;
pEdit->GetWindowText(str);
CString IP=str;

int ip=ntohl(inet_addr(IP));

INFO* pINFO= new INFO;
pINFO->m_IP=ip;

....

INFO* pINFO = (INFO*) lpParam;
sockaddr_in severAddr;
severAddr.sin_family = AF_INET;
severAddr.sin_port = htons(pINFO->m_Port);
severAddr.sin_addr.S_un.S_addr = htonl(pINFO->m_IP);
.....
connect(sock, (sockaddr*)&severAddr, sizeof(severAddr));

再这里我想再取回pINFO->m_IP

就这样不知哪有错吗?
virsnow 2005-04-04
  • 打赏
  • 举报
回复
好的,我看一下
晨星 2005-04-04
  • 打赏
  • 举报
回复
本来不繁琐的,不知道你哪里出了问题,inet_ntoa(sin.sin_addr)本来完全可以的。
关键是你那个sin是怎么得到的?为什么直接转是反的?为什么必须手工反过来再转才对?
virsnow 2005-04-04
  • 打赏
  • 举报
回复
sin.sin_addr.S_un.S_addr = ntohl(sin.sin_addr.S_un.S_addr);
sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
我用这个可以了,但好象太烦锁,有简单点了吗?

一会就给分,先谢啦~~
virsnow 2005-04-04
  • 打赏
  • 举报
回复
error C2664: 'ntohl' : cannot convert parameter 1 from 'struct in_addr' to 'unsigned long'
virsnow 2005-04-04
  • 打赏
  • 举报
回复
65.99.21.172应该是172.21.99.65



晨星 2005-04-04
  • 打赏
  • 举报
回复
哦,不行。
sin.sin_addr.S_un.S_addr = ntohl(sin.sin_addr.S_un.S_addr);
sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
晨星 2005-04-04
  • 打赏
  • 举报
回复
哦,不行。
sin.sin_addr.S_un.S_addr = ntohl(sin.sin_addr.S_un.S_addr);
sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
oyljerry 2005-04-04
  • 打赏
  • 举报
回复
字符串中自己增加.
oyljerry 2005-04-04
  • 打赏
  • 举报
回复
字符串中自己增加.
晨星 2005-04-04
  • 打赏
  • 举报
回复
是反的?那就:
inet_ntoa(ntohl(sin.sin_addr))
晨星 2005-04-04
  • 打赏
  • 举报
回复
sorry,
p[0], p[1], p[2], p[4],

p[0], p[1], p[2], p[3], //最后这个。
virsnow 2005-04-04
  • 打赏
  • 举报
回复
我这样:
sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
List.AddString(sItem);
转过来的IP地址,是反的。。。
晨星 2005-04-04
  • 打赏
  • 举报
回复
我刚才以为你的ip变量中已经把点分好了,原来还没分好。
晨星 2005-04-04
  • 打赏
  • 举报
回复
INFO info;
……
const unsigned char* p = (const unsigned char*)&(info.m_IP);
CString sItem;
sItem.Format("%d.%d.%d.%d:%d", p[0], p[1], p[2], p[4], info.m_Port);
List.AddString(sItem);
virsnow 2005-04-04
  • 打赏
  • 举报
回复
这样好样不行,显示的不是点分式…
virsnow 2005-04-04
  • 打赏
  • 举报
回复
是想转化为字符串在加到列表中去!
加载更多回复(2)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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