SOCKET API嵌套字加入IP地址可以,加入域名为何不行?

vc8fans 2012-05-25 06:44:05
WSADATA wsadata;
SOCKET server;
SOCKADDR_IN serveraddr;

CString m_addr; //IP地址

m_addr = "245,99,34.84"; //这样的地址能运行

server=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(port);
serveraddr.sin_addr.S_un.S_addr=inet_addr(m_addr.LockBuffer());

if(connect(server,(SOCKADDR*)&serveraddr,sizeof(serveraddr))<0)
{
GetDlgItem(IDC_WORK_STATE)->SetWindowText("连接失败!");
AfxMessageBox("Connect Server Error!");
return ;
}


问:m_addr = "myIP.gicp.net"; //的域名就不能用 如何才能直接用域名。?????

另:CSocket *pclient //用MFC 的CSocket类 用域名就可以
pclient->Connect("myIP.gicp.net",3304); //连接服务端
...全文
224 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vc8fans 2012-05-25
  • 打赏
  • 举报
回复
自己搞定了

CString CMyDlg::GetIPAddress(CString strHost)
{
CString strIP;
WSADATA wsaData;
HOSTENT *pHostEnt;
struct sockaddr_in sAddr;
int nAdapter = 0;

if(WSAStartup(0x0101, &wsaData))
{
printf( "WSAStartup failed %s\n ", WSAGetLastError());
return strIP;
}

pHostEnt = gethostbyname(strHost.GetBuffer(0));

while(pHostEnt-> h_addr_list[nAdapter])
{
// pHostEnt-> h_addr_list[nAdapter] is the current address in host
// order.
// Copy the address information from the pHostEnt to a sockaddr_in
// structure.
memcpy(&sAddr.sin_addr.s_addr, pHostEnt->h_addr_list[nAdapter],pHostEnt->h_length);
// Output the machines IP Address.
strIP.Format( "%s", inet_ntoa(sAddr.sin_addr));
nAdapter++;
}
WSACleanup();

return strIP;
}
stjay 2012-05-25
  • 打赏
  • 举报
回复
serveraddr.sin_addr.S_un.S_addr=inet_addr(m_addr.LockBuffer());

if (serveraddr.sin_addr.S_un.S_addr == INADDR_NONE)
{
LPHOSTENT lphost;
lphost = gethostbyname(m_addr);
if (lphost != NULL)
serveraddr.sin_addr.S_un.S_addr = ((LPIN_ADDR)lphost->h_addr)->s_addr;
}
vc8fans 2012-05-25
  • 打赏
  • 举报
回复
域名转IP是个好办法,有例子吗?谢谢!
franzhong 2012-05-25
  • 打赏
  • 举报
回复
int socket(int domain,int type,int protocol);
tcp/ip domain应为AF_INET
你输入的字母应该是转换不了了
你可以在别的地方先域名解析出来把他转换成AF_INET型就可以了吧

16,471

社区成员

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

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

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