请问connect()failed:10060什么意思?

guidianshuxue 2010-10-16 01:26:27
我写了个网络通信的程序,有时候能运行出来,但是有时候运行不了,或者运行着的时候就蹦出个对话框提示connect()failed:10060,我就纳闷了!难道是通信有问题?
...全文
2092 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaohongbo83 2010-10-18
  • 打赏
  • 举报
回复
连接超时的话,检查一下网络是连接问题,还是防火墙问题 还是什么问题?
teleinfor 2010-10-16
  • 打赏
  • 举报
回复
找来的,当然可以应用于WSAGetLastError()

1
2 /*
3 利用FormatMessage函数得到错误代码的文本显示。而错误代号则可由GetLastError()获得。(_WINDOWS)
4 */
5
6 DWORD nErrorNo = GetLastError ( ); // 得到错误代码
7 LPSTR lpBuffer;
8 FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER |
9 FORMAT_MESSAGE_IGNORE_INSERTS |
10 FORMAT_MESSAGE_FROM_SYSTEM,
11 NULL,
12 nErrorNo, // 此乃错误代码,通常在程序中可由 GetLastError()得之
13 LANG_NEUTRAL,
14 (LPTSTR) & lpBuffer,
15 0 ,
16 NULL );
17 CString strErrorCause = lpBuffer ? _T(lpBuffer) : _T( " Sorry, cannot find this error info. " );
18 UpdateData (FALSE);
19
20 // Free the buffer.
21 LocalFree (lpBuffer);
guidianshuxue 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 teleinfor 的回复:]
WSAGetLastError对号入座即可。
#define WSAETIMEDOUT (WSABASEERR+60)
如果需要文字解释,使用FormatMessage把错误码转换为系统错误描述信息出来即可。

C/C++ code

/*
* Windows Sockets definitions of regular Berkeley error constants
#defi……
[/Quote]

可以举个例子吗?
teleinfor 2010-10-16
  • 打赏
  • 举报
回复
WSAGetLastError对号入座即可。
#define WSAETIMEDOUT (WSABASEERR+60)
如果需要文字解释,使用FormatMessage把错误码转换为系统错误描述信息出来即可。

/*
* Windows Sockets definitions of regular Berkeley error constants
#define WSAEWOULDBLOCK (WSABASEERR+35)
#define WSAEINPROGRESS (WSABASEERR+36)
#define WSAEALREADY (WSABASEERR+37)
#define WSAENOTSOCK (WSABASEERR+38)
#define WSAEDESTADDRREQ (WSABASEERR+39)
#define WSAEMSGSIZE (WSABASEERR+40)
#define WSAEPROTOTYPE (WSABASEERR+41)
#define WSAENOPROTOOPT (WSABASEERR+42)
#define WSAEPROTONOSUPPORT (WSABASEERR+43)
#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
#define WSAEOPNOTSUPP (WSABASEERR+45)
#define WSAEPFNOSUPPORT (WSABASEERR+46)
#define WSAEAFNOSUPPORT (WSABASEERR+47)
#define WSAEADDRINUSE (WSABASEERR+48)
#define WSAEADDRNOTAVAIL (WSABASEERR+49)
#define WSAENETDOWN (WSABASEERR+50)
#define WSAENETUNREACH (WSABASEERR+51)
#define WSAENETRESET (WSABASEERR+52)
#define WSAECONNABORTED (WSABASEERR+53)
#define WSAECONNRESET (WSABASEERR+54)
#define WSAENOBUFS (WSABASEERR+55)
#define WSAEISCONN (WSABASEERR+56)
#define WSAENOTCONN (WSABASEERR+57)
#define WSAESHUTDOWN (WSABASEERR+58)
#define WSAETOOMANYREFS (WSABASEERR+59)
#define WSAETIMEDOUT (WSABASEERR+60)
#define WSAECONNREFUSED (WSABASEERR+61)
#define WSAELOOP (WSABASEERR+62)
#define WSAENAMETOOLONG (WSABASEERR+63)
#define WSAEHOSTDOWN (WSABASEERR+64)
#define WSAEHOSTUNREACH (WSABASEERR+65)
#define WSAENOTEMPTY (WSABASEERR+66)
#define WSAEPROCLIM (WSABASEERR+67)
#define WSAEUSERS (WSABASEERR+68)
#define WSAEDQUOT (WSABASEERR+69)
#define WSAESTALE (WSABASEERR+70)
#define WSAEREMOTE (WSABASEERR+71)
*/
guidianshuxue 2010-10-16
  • 打赏
  • 举报
回复
我是采用阻塞模式接收客户端的连接的,
Socket = accept(Listen,(struct sockaddr *)&client,&iAddrSize);
傻X 2010-10-16
  • 打赏
  • 举报
回复
楼主提供的信息完全不够啊,因为10060就是连接超时的错误.很多原因都会造成这个情况.
但是楼主说有时运行的了,有时运行不了,我猜测是你单线程的时候accpet没等在那里吧,因为在处理数据.仅仅是猜测.

18,356

社区成员

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

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