MFC的DLL中UDP建立连接失败排查
2015-03-25 10:56
190 查看
在MFC应用程序中, 同样的代码, 运行在两个不同的程序下, 其中一个可以顺利通讯, 而另一个却连接失败.代码如下:
BOOL reb = TRUE; sockaddr_in addrto; SOCKET linkto; linkto = socket(AF_INET, SOCK_DGRAM, 0); addrto.sin_family = AF_INET; addrto.sin_port = htons(30512); addrto.sin_addr.S_un.S_addr = inet_addr(strip.c_str()); int res = bind(linkto,(struct sockaddr *)&addrto,sizeof(addrto)); int errornum = WSAGetLastError(); int len = sizeof(sockaddr_in); int cmdlen = sizeof(CmdInfo); int sendnum = sendto(linkto, (char *)pcmdinfo, cmdlen, 0, (sockaddr*)&addrto, len); closesocket(linkto);
WSAGetLastError()返回值 errornum是10093
解释是这样的:
WSANOTINITIALISED (10093)
翻译: 还未执行的成功 WSAStartup。
说明: 是该程序不具有称为 WSAStartup (Wsapiref_1v8y.asp) 或 WSAStartup (Wsapiref_1v8y.asp) 失败。 该程序可能正在访问不属于当前的活动任务的套接字 (也就其试图共享的任务之间的一套接字),或 WSACleanup 调用次数太多。
哦 我懂了! 原来是没有初始化的锅!
于是在MFC程序的入口处Instance中加入如下代码:
WSADATA wsaData; int nRet; if((nRet = WSAStartup(MAKEWORD(2,2),&wsaData)) != 0){ TRACE("WSAStartup failed"); exit(0); }
OK~! 连接顺利建立!
不过不清楚的是 为什么一边可以而另一边不可以 , 还待检查!
相关文章推荐
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, erro
- 穿透防火墙建立UDP连接
- MFC下关于“建立空文档失败”问题的分析(转载)
- SQL 2005服务启动失败(在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误)
- 调用Https WebService发布后使用时报“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系”证书验证失败的解决过程(3)
- [DataBase][Sql Server 2005 Express]语言差异导致建立连接失败
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server不允许进行远程连接可能会导致此失败
- MFC share DLL中对话框中的ActiveX创建失败原因
- (转)在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)
- MFC下关于“建立空文档失败”问题的分析
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连
- MFC下关于“建立空文档失败”问题的分析(转载)
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 -
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
- vc中MFC Extention Dll的建立方法
- "基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系"证书验证失败的解决过程(3)
- [转载] MFC下关于“建立空文档失败”问题的分析二 ---ProcessShellCommand()函数分析