创建套接字失败

swuxd 2010-03-05 04:12:02
BOOL CChDlg::InitSocket()
{
m_socket = socket(AF_INET,SOCK_DGRAM,0);
if (INVALID_SOCKET==m_socket)
{
AfxMessageBox("失败INIT");
return FALSE;
}
SOCKADDR_IN addrSock;
addrSock.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSock.sin_family=AF_INET;
addrSock.sin_port = htons(6000);

int retval;

retval = bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));
if (SOCKET_ERROR==retval)
{
closesocket(m_socket);
AfxMessageBox("绑定失败");
return FALSE;
}
return TRUE;
}


已经使用 AfxSocketInit()成功加载套接字了,没有失败的提示
为什么这里创建失败呢,我写的是基于一个UDP的聊天程序
...全文
1118 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaahuanian 2012-07-09
  • 打赏
  • 举报
回复
16楼的方法是正确的,你查看自己的代码吧
罗云2号 2012-06-20
  • 打赏
  • 举报
回复
你的问题 我刚刚也碰到,主要是AfxSocketInit()的位置问题,放在前面就没有问题了
BOOL CChatApp::InitInstance()
{
AfxEnableControlContainer();
if(!AfxSocketInit())
AfxMessageBox("Failed to Initialize Sockets",MB_OK| MB_ICONSTOP);
...
Xuwb0825 2012-03-18
  • 打赏
  • 举报
回复
16楼说得对,我把加载套接字的程序代码放在InitInstance()的最前面后就没有问题了!谢谢16楼的解答
chenlingjun 2010-12-07
  • 打赏
  • 举报
回复
我以前也遇到过这个问题,郁闷了好久。你调用了AfxSocketInit()没有显示“加载套接字库失败”并不代表他就加载成功了!还有一种情况:整个if(!AfxSocketInit()){...}根本没有被执行!!该语句一定要在调用Dlg.Modal()前调用。你可以检查一下AfxSocketInit()在InitInstance()中的位置,把它放在前面就可以了。
你可以自己调试一下,在InitInstance()和AfxSocketInit()处设置断点,单步调试验证。
青稞 2010-03-05
  • 打赏
  • 举报
回复
你加载了Socket版本了么?使用Socket前,要先用这个WSAStartup加载
WizardK 2010-03-05
  • 打赏
  • 举报
回复
WSAStartup
tanwei1002 2010-03-05
  • 打赏
  • 举报
回复
AfxSocketInit
zyq5945 2010-03-05
  • 打赏
  • 举报
回复
AfxSocketInit() 这个函数,在使用CSocket前一定要先调用该函数,否则使用CSocket会出错;并且该函数还有一个重要的使用方式,就是在某个线程下使用 CSocket 前一定要调用,就算主线程调用了该函数,在子线程下使用 CSocket 也要先调用该函数,要不会出错。
WSAStartup是全局的,对所有线程都有用。
翅膀又硬了 2010-03-05
  • 打赏
  • 举报
回复
失败原因一般都是没有初始化。WSAStartup
ouyh12345 2010-03-05
  • 打赏
  • 举报
回复
在哪使用AfxSocketInit了?是否同在一线程空间?
sjdev 2010-03-05
  • 打赏
  • 举报
回复
WSAGetLastError();
swuxd 2010-03-05
  • 打赏
  • 举报
回复
引用 12 楼 wizardk 的回复:
引用 10 楼 swuxd 的回复:引用 8 楼 daviemeng 的回复: 使用 Getlasterror 就能查出来 是什么原因 使用GetLastError()的返回值使用10进制打出来是 10093

10093:WSANOTINITIALISED
Winsock尚未初始化。尚未成功完成对WSAStatup的一次调用。

都说了,让你初始化。

我用到了多线程,估计有啥原因。AfxSocketInit() 肯定成功了,因为他没有提示出来,难道很快有清空了?
WizardK 2010-03-05
  • 打赏
  • 举报
回复
引用 10 楼 swuxd 的回复:
引用 8 楼 daviemeng 的回复:
使用 Getlasterror 就能查出来 是什么原因
使用GetLastError()的返回值使用10进制打出来是 10093


10093:WSANOTINITIALISED
Winsock尚未初始化。尚未成功完成对WSAStatup的一次调用。

都说了,让你初始化。
swuxd 2010-03-05
  • 打赏
  • 举报
回复
BOOL CChApp::InitInstance()
{
/////////////
if(!AfxSocketInit())
{
AfxMessageBox("加载接字失败");
return FALSE;
}
///////////////
}
这里的MessageBox没有弹出来呢,应该是成功了
swuxd 2010-03-05
  • 打赏
  • 举报
回复
引用 8 楼 daviemeng 的回复:
使用 Getlasterror 就能查出来 是什么原因

使用GetLastError()的返回值使用10进制打出来是 10093
swuxd 2010-03-05
  • 打赏
  • 举报
回复
引用 7 楼 visualeleven 的回复:
引用 6 楼 swuxd 的回复:http://hi.baidu.com/galafx/blog/item/89ff5c16af175401c93d6dc8.html 感觉和这篇文章的原因是一样的, 我写的也是对话框程序 ====================== 创建套接字失败2009-03-21 15:09写了一个局域网聊天程序,在创建套接字的时候总是提示创建套接字失败。 研究了好久好久~~ 终于发现问题的所在。 程序是在窗口创建的同时创建套接字的,所以套接字库一定要在创建窗口前加载。 这是个很低级的错误,呵呵~ =========================================================== 这个加载放在哪里 我放在InitInstance 里也是失败

程序是在窗口创建的同时创建套接字的,所以套接字库一定要在创建窗口前加载。
// 是吗????

呵,这句话不是我说的,我是引用那篇文章上的
刚刚凉 2010-03-05
  • 打赏
  • 举报
回复
使用 Getlasterror 就能查出来 是什么原因
Eleven 2010-03-05
  • 打赏
  • 举报
回复
引用 6 楼 swuxd 的回复:
http://hi.baidu.com/galafx/blog/item/89ff5c16af175401c93d6dc8.html
感觉和这篇文章的原因是一样的,
我写的也是对话框程序
======================
创建套接字失败2009-03-21 15:09写了一个局域网聊天程序,在创建套接字的时候总是提示创建套接字失败。

研究了好久好久~~

终于发现问题的所在。

程序是在窗口创建的同时创建套接字的,所以套接字库一定要在创建窗口前加载。

这是个很低级的错误,呵呵~
===========================================================
这个加载放在哪里
我放在InitInstance 里也是失败


程序是在窗口创建的同时创建套接字的,所以套接字库一定要在创建窗口前加载。
// 是吗????
swuxd 2010-03-05
  • 打赏
  • 举报
回复
http://hi.baidu.com/galafx/blog/item/89ff5c16af175401c93d6dc8.html
感觉和这篇文章的原因是一样的,
我写的也是对话框程序
======================
创建套接字失败2009-03-21 15:09写了一个局域网聊天程序,在创建套接字的时候总是提示创建套接字失败。

研究了好久好久~~

终于发现问题的所在。

程序是在窗口创建的同时创建套接字的,所以套接字库一定要在创建窗口前加载。

这是个很低级的错误,呵呵~
===========================================================
这个加载放在哪里
我放在InitInstance 里也是失败

18,356

社区成员

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

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