我在做一个小聊天程序 可以根据ip控件的ip地址或者根据编辑筐中的hostname发送信息
结果ip控件那部分成功了。hostname却中止程序。到底是哪里的问题啊void CChatDlg::OnBtnSend()
{
// TODO: Add your control notification handler code here
WSABUF WSASendBuf;
WSASendBuf.buf=new char[200];
WSASendBuf.len=200;
CString strSend;
GetDlgItemText(IDC_EDIT_SEND,strSend);
WSASendBuf.buf=strSend.GetBuffer(strSend.GetLength()+1); DWORD dwBytesSent; SOCKADDR_IN addrTo;
addrTo.sin_family=AF_INET;
addrTo.sin_port=htons(6000); CString strHost;
hostent *pHost;
GetDlgItemText(IDC_EDIT_HOSTNAME,strHost);
if(strHost=="")
{
//use IP
DWORD dwIP;
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
addrTo.sin_addr.S_un.S_addr=htonl(dwIP);
}
else
{
//use hostname
pHost=gethostbyname(strHost);
addrTo.sin_addr.S_un.S_addr=*((DWORD*)(pHost->h_addr_list)); } int sendRes;
sendRes=WSASendTo(m_socket,&WSASendBuf,1,&dwBytesSent,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR),
NULL,NULL);
if(sendRes==SOCKET_ERROR)
{
MessageBox("发送失败");
return;
}}
结果ip控件那部分成功了。hostname却中止程序。到底是哪里的问题啊void CChatDlg::OnBtnSend()
{
// TODO: Add your control notification handler code here
WSABUF WSASendBuf;
WSASendBuf.buf=new char[200];
WSASendBuf.len=200;
CString strSend;
GetDlgItemText(IDC_EDIT_SEND,strSend);
WSASendBuf.buf=strSend.GetBuffer(strSend.GetLength()+1); DWORD dwBytesSent; SOCKADDR_IN addrTo;
addrTo.sin_family=AF_INET;
addrTo.sin_port=htons(6000); CString strHost;
hostent *pHost;
GetDlgItemText(IDC_EDIT_HOSTNAME,strHost);
if(strHost=="")
{
//use IP
DWORD dwIP;
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
addrTo.sin_addr.S_un.S_addr=htonl(dwIP);
}
else
{
//use hostname
pHost=gethostbyname(strHost);
addrTo.sin_addr.S_un.S_addr=*((DWORD*)(pHost->h_addr_list)); } int sendRes;
sendRes=WSASendTo(m_socket,&WSASendBuf,1,&dwBytesSent,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR),
NULL,NULL);
if(sendRes==SOCKET_ERROR)
{
MessageBox("发送失败");
return;
}}
解决方案 »
- vs2005中如何编程处理中文数据的传输?
- 我用CRectTracker实现了拖动直线矩形,可是拖动曲线多边形却不行
- 菜鸟问一些比较基础问题,求达人们解答
- 使用try catch处理异常时,是不是必须添加throw主动抛出异常?
- 创建线程使用CREATE_SUSPENDED却立即执行?
- 关于CoInitializeEx(NULL, COINIT_MULTITHREADED)的问题
- 一个小问题,望高手解答一下 谢!
- 为什么在WEB项目中只能使用com,不能使用普通的dll,就因为组件能注册吗?哪位高手能将普通Dll与com的区别详细解释一下
- 变量=中文的问题
- 把HTML包含在资源中,那么在程序中如何访问?
- 怎么知道某个 TCP 连接是那个程序发起的?有什么比较好的工具软件?
- 怎么监视到系统正在打开的文档?
//////////////////
hostent *pHost = new hostent;
要分配空间