WSASocket 返回10106

骑着蜗牛追乌龟 2011-05-25 02:21:23
WSASocket 返回10106 ,说是协议不支持或者未安装,但是WSAStartup已经调用成功了。
同样的WSASocket创建套接字,在DEMO控制台下可以,但是放到MFC的对话框里就返回10106了,该怎么解决哦?
大家帮忙,谢谢了!
...全文
105 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyh12345 2011-05-25
  • 打赏
  • 举报
回复
新建一工程,选择支持socket,看会添加什么东西
  • 打赏
  • 举报
回复
楼上滴,试了!还是10106
柚子毛驴 2011-05-25
  • 打赏
  • 举报
回复
在MFC中要使用
::WSAStartup( wVersionRequested, &wsaData );
::WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED);

可以试一下。
  • 打赏
  • 举报
回复
郁闷啊
  • 打赏
  • 举报
回复
现在又测了,在其它XP机器上也运行不了。
这是为什么呢?
Eleven 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 abenboy 的回复:]
补充:放到工程里,在XP下可以,在WIN7下报10106错误
[/Quote]
权限问题吧,你用管理员权限运行试试
saintwang 2011-05-25
  • 打赏
  • 举报
回复
换张盘,重装Win7系统试试
  • 打赏
  • 举报
回复
补充:放到工程里,在XP下可以,在WIN7下报10106错误
  • 打赏
  • 举报
回复
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
void CTtDlg::OnButton1()
{
//加载套接字库
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2,2);
if(WSAStartup( wVersionRequested, &wsaData ) != 0 )
{
AfxMessageBox("1");
}

if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup();
AfxMessageBox("2");
}


//服务端创建,绑定,监听
SOCKET m_listenSocket;
m_listenSocket = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED);
if(INVALID_SOCKET == m_listenSocket)
{
CString err;
err.Format("%d",WSAGetLastError());
AfxMessageBox(err);
}
else
{
AfxMessageBox("成功");
}

}
//这是带对话框的Demo,在XP和WIN7下都能成功,但是把同样的代码,放到工程里面就不行了
Eleven 2011-05-25
  • 打赏
  • 举报
回复
你的代码,和你当前的平台环境?

18,356

社区成员

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

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