typedef struct INFO
{
BOOL m_bUsed;
int m_IP;
unsigned short m_Port;
} char ip[50];
int port;
List.AddString(ip);
List.AddString(port);
怎样将这个结构的内容加入列表中?谢谢!
{
BOOL m_bUsed;
int m_IP;
unsigned short m_Port;
} char ip[50];
int port;
List.AddString(ip);
List.AddString(port);
怎样将这个结构的内容加入列表中?谢谢!
sItem.Format("%s:%d", ip, port);
List.AddString(sItem);
……
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);
sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
List.AddString(sItem);
转过来的IP地址,是反的
p[0], p[1], p[2], p[4],
改
p[0], p[1], p[2], p[3], //最后这个。
inet_ntoa(ntohl(sin.sin_addr))
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);
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);
sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
我用这个可以了,但好象太烦锁,有简单点了吗?一会就给分,先谢啦~~
关键是你那个sin是怎么得到的?为什么直接转是反的?为什么必须手工反过来再转才对?
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
就这样不知哪有错吗?
int ip=ntohl(inet_addr(IP));
直接
int ip=inet_addr(IP);
就可以了。severAddr.sin_addr.S_un.S_addr = htonl(pINFO->m_IP);
这里不要改。没有试试,你试试看。