Socket中的Connect的返回值为什么会出现-1

leo450 2009-12-09 03:04:54
WSADATA wsData;
DWORD dwIPAddr;
SOCKADDR_IN sockAddr;

if(WSAStartup(WINSOCK_VERSION,&wsData))
{
MessageBox("Could not load Windows Sockets DLL.",NULL,MB_OK);
return;
}

if((dwIPAddr=inet_addr(m_strIp))==INADDR_NONE)
{
MessageBox("IPAddress is error!\nPlease input again!",NULL,MB_OK);
return;
}
else
{
m_socket=socket(PF_INET,SOCK_STREAM,0);
sockAddr.sin_family=AF_INET;
sockAddr.sin_port=m_iport;
sockAddr.sin_addr.S_un.S_addr=dwIPAddr;

int nConnect=connect(m_socket,(LPSOCKADDR)&sockAddr,sizeof(sockAddr));
if(nConnect == SOCKET_ERROR) --------------->总是会在这里,想问下为什么会一直返回的是 -1?
ReportWinSockErr("Connect is error!!");
else
MessageBox("Successfully connected Server!!",NULL,MB_OK);
}

在线等待。。。急,各位大虾帮忙哈!
...全文
3004 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
热爱Coding 2011-10-02
  • 打赏
  • 举报
回复
膜拜楼上
NIL_ZJW 2011-01-07
  • 打赏
  • 举报
回复 1
LZ写的是异步socket吧
异步状态下connect不阻塞,直接返回-1,connect返回-1是对的
然后通过select进行判断是否连接上
同步状态下connect阻塞,系统莫认时间75秒后,返回成功或失败
gnq240684 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 leo450 的回复:]
m_iport 是DWORD型的  不用转
[/Quote]
这个不是类型转换的问题 是网络字节序转换
kostion 2009-12-09
  • 打赏
  • 举报
回复
没有转换格式吧
addr.sin_addr.s_addr = inet_addr(你的IP);
addr.sin_port = htons(你的端口);
goodname 2009-12-09
  • 打赏
  • 举报
回复
端口号应将本机序转为网络序
sockAddr.sin_port=htonl(m_iport);

sduxiaoxiang 2009-12-09
  • 打赏
  • 举报
回复
没connect成功就是-1啊
leo450 2009-12-09
  • 打赏
  • 举报
回复
m_iport 是DWORD型的 不用转
gnq240684 2009-12-09
  • 打赏
  • 举报
回复
hotns(m_iport)?

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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