MFC socket 编程 我想从编辑框中取出地址进行分析,可是总是失败
CStrings1,s2;GetDlgItemText(IDC_EDIT1,s1);//从编辑框A中取出地址GetDlgItemText(IDC_EDIT2,s2);//...
CString s1,s2;
GetDlgItemText(IDC_EDIT1 ,s1);//从编辑框A中取出地址
GetDlgItemText(IDC_EDIT2 ,s2);//从编辑框B中取出端口号
sockaddr_in serverip;
const char *p1=(LPSTR)(LPCTSTR)s1;//转换
const char *p2=(LPSTR)(LPCTSTR)s2;//转换
///////////////////////////////////////
// ULONG uAddr=::inet_addr(p1);//经测试,这样写是错误的
ULONG uAddr=::inet_addr("121.248.55.68");
//////
serverip.sin_addr.S_un.S_addr=uAddr;
serverip.sin_family=AF_INET;
/////////////////////////////////////
//int port=atoi(p2);
//serverip.sin_port=htons(port);//这样写也是错误的
serverip.sin_port=htons(8080);
现在我只能预先将地址和端口号写在软件里,好蛋疼 展开
GetDlgItemText(IDC_EDIT1 ,s1);//从编辑框A中取出地址
GetDlgItemText(IDC_EDIT2 ,s2);//从编辑框B中取出端口号
sockaddr_in serverip;
const char *p1=(LPSTR)(LPCTSTR)s1;//转换
const char *p2=(LPSTR)(LPCTSTR)s2;//转换
///////////////////////////////////////
// ULONG uAddr=::inet_addr(p1);//经测试,这样写是错误的
ULONG uAddr=::inet_addr("121.248.55.68");
//////
serverip.sin_addr.S_un.S_addr=uAddr;
serverip.sin_family=AF_INET;
/////////////////////////////////////
//int port=atoi(p2);
//serverip.sin_port=htons(port);//这样写也是错误的
serverip.sin_port=htons(8080);
现在我只能预先将地址和端口号写在软件里,好蛋疼 展开
2个回答
展开全部
何?
我想知道你下面那个“这样写也是错误的”是什么情况
上面那个地址的可以通过编译的话,
下面那个端口的应该通不过编译了吧?
上面我看到把LPCTSTR强转到LPSTR,其中最明显的变化是T没掉了:TSTR变成了STR
如果不强转LPSTR就不能编译(或者说不强转LPCSTR)的话,……
如果确实如我所说,那么八成是你的工程是设置为“使用Unicode字符集”了
改成“使用多字节字符集”可以解决,或者自己将Unicode字符串转为多字节编码字符串可解决。
我想知道你下面那个“这样写也是错误的”是什么情况
上面那个地址的可以通过编译的话,
下面那个端口的应该通不过编译了吧?
上面我看到把LPCTSTR强转到LPSTR,其中最明显的变化是T没掉了:TSTR变成了STR
如果不强转LPSTR就不能编译(或者说不强转LPCSTR)的话,……
如果确实如我所说,那么八成是你的工程是设置为“使用Unicode字符集”了
改成“使用多字节字符集”可以解决,或者自己将Unicode字符串转为多字节编码字符串可解决。
展开全部
方法不对哦
DWORD dwIP;
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS2))->GetAddress(dwIP);
addrSock.sin_addr.S_un.S_addr=htonl(dwIP);
注意:IDC_IPADDRESS2不是一般的编辑框而是IP地址编辑框控件。
端口号:关联一个成员变量就可以了 直接用
如: addrSock.sin_port=htons(m_toport);//m_toport是关联的编辑框变量
DWORD dwIP;
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS2))->GetAddress(dwIP);
addrSock.sin_addr.S_un.S_addr=htonl(dwIP);
注意:IDC_IPADDRESS2不是一般的编辑框而是IP地址编辑框控件。
端口号:关联一个成员变量就可以了 直接用
如: addrSock.sin_port=htons(m_toport);//m_toport是关联的编辑框变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询