CSocket类在 creat() 时出错,错误为:应用程序没有调用 WSAStartup,或者 WSAStartup 失败。

ludou 2002-08-21 02:48:02
CSocket类在 creat() 时出错,错误为代码1093:应用程序没有调用 WSAStartup,或者 WSAStartup 失败。
不知道是怎么回事,请问是什么原因,该怎么办?
-------------------------------------------------------------------
CSocket socket;
const int Buf_Size = 400;
char buf[Buf_Size];


int k=socket.GetLastError();
socket.Create();
k=socket.GetLastError();
...全文
907 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zws101 2002-08-23
  • 打赏
  • 举报
回复
同意楼上,反正就是初始化的问题了
用MFC的话还是用AfxSocketInit()的好
ryan_chen 2002-08-23
  • 打赏
  • 举报
回复
方法一:
用建立Project时候,选择支持Socket。MFC生成的代码会做所有事。

方法二:
包含头文件
#include <afxsock.h> // MFC socket extensions
在程序调用CSocket类之前的任何时候,执行代码:
AfxSocketInit();返回TRUE为成功。

方法三:
包含头文件
#include <winsock2.h>
在程序调用CSocket类之前的任何时候,执行代码:
WSADATA wsaData;
WSAStartup(0x0202, &wsaData );返回TRUE为成功。

alanwang_ 2002-08-23
  • 打赏
  • 举报
回复
同意楼上hohoo(hohoo)
你应该在工程创建的时候选择socket支持,这样自动生成的代码中初始化的地方就已经调用了AfxSocketInit()。
hfycl 2002-08-22
  • 打赏
  • 举报
回复
安提示调用 WSAStartup不就得了
hohoo 2002-08-21
  • 打赏
  • 举报
回复
要使用MFC的CSocket类,你需要在程序初始化的地方,调用AfxSocketInit()初始化socket。
xuying 2002-08-21
  • 打赏
  • 举报
回复
使用socket的时候要先初始化。
在程序开始的时候调用下面的代码一次即可:

WORD wVersionRequested;
WSADATA wsadata;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsadata);
if (err!=0)
return;
luerdong 2002-08-21
  • 打赏
  • 举报
回复
Windows Socket服务以Winsock.dll的形式实现,使用任何Windows Socket API调用之前,必须使用WSAStartup()对dll初始化,协商Winsock的版本支持,并分配资源。关闭Socket后,要调用WSAClearup()终止对dll的调用:
int PASCAL FAR WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData)
一个例子:
WORD wVersionRequested;
WSADATA wsadata;
int err;
wVersionRequested=MAKEWORD(1.1);
err=WSAStartup(wVersionRequested,&wsadata);
if (err!=0)
{
//未找到可用的DLL,返回
return;
}
//确保DLL支持1.1版本
if(LOBYTE(wsadata.wVersion)!=1 || HIBYTE(wsadata.wVersion)!=1)
{
WSAClearup();
return;
}

4,359

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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