connect()怎连接问题

zhuxinglin147258 2009-05-21 05:02:34
bool CSocket::OnConnect(CString hostip,int port) //连接
{
// AfxMessageBox(hostip);
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_addr.S_un.S_addr=inet_addr((char *)&hostip);
sin.sin_port=htons(port);
if(::connect(sock,(const sockaddr *)&sin,sizeof(sin))==SOCKET_ERROR)
{
AfxMessageBox("连接失败!");
return false;
}

return true;
}
什么老是连接失败啊!
是不是那里有问题啊?
...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
awjx 2009-05-24
  • 打赏
  • 举报
回复
sock创建了没有?
zhuxinglin147258 2009-05-24
  • 打赏
  • 举报
回复
哦,这样啊,谢谢
弦苦 2009-05-24
  • 打赏
  • 举报
回复
以下代码可以显示中文错误提示信息:
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
0, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
(LPTSTR)&lpMsgBuf, 0, NULL);
//显示
::MessageBox(0,(LPCTSTR)lpMsgBuf,_T("GetLastError"),MB_OK|MB_ICONINFORMATION );
//释放内存
::LocalFree( lpMsgBuf );
ccpaishi 2009-05-24
  • 打赏
  • 举报
回复
楼主代码里应该多做代码的错误处理,而且网络程序中最好不要出现CSTRING,用char*处理
Wenxy1 2009-05-24
  • 打赏
  • 举报
回复

if(::connect(sock,(const sockaddr *)&sin,sizeof(sin))==SOCKET_ERROR)
{
int nError = WSAGetLastError();
CString str;
str.Format("Error: 连接失败,错误码:%d", nError );
AfxMessageBox(str);
return false;
}
atopp 2009-05-21
  • 打赏
  • 举报
回复
从这个函数 看不出来什么问题 你设个断点 看看传进connect函数的参数到底对不对 因为CString强转到char在unicode下是有问题的

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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