请问在函数AfxSocketInit()中如何从1。1 升级到2。0

blackdeath 2004-06-30 09:59:51
程序原来用AfxSocketInit()初始化为1。1, 现在想升级到2。0,
但加入winsock2.h 后,与原来的afxsock.h中的winsock.h冲突,如何解决?
再问如用AfxSocketInit,只能初始化为1。1吗?
...全文
35 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
PiggyXP 2004-06-30
  • 打赏
  • 举报
回复
嗯,楼主根本就没有必要使用AfxSocketInit

自己写初始化代码也不麻烦的,就那么几句,这样也就不会冲突了^_^
gary137 2004-06-30
  • 打赏
  • 举报
回复
MFC中关于AfxSocketInit的代码如下:(sockcore.cpp)


BOOL AFXAPI AfxSocketInit(WSADATA* lpwsaData)
{
_AFX_SOCK_STATE* pState = _afxSockState.GetData();
if (pState->m_pfnSockTerm == NULL)
{
// initialize Winsock library
WSADATA wsaData;
if (lpwsaData == NULL)
lpwsaData = &wsaData;

WORD wVersionRequested = MAKEWORD(1, 1);
int nResult = WSAStartup(wVersionRequested, lpwsaData);
if (nResult != 0)
return FALSE;

if (LOBYTE(lpwsaData->wVersion) != 1 || HIBYTE(lpwsaData->wVersion) != 1)
{
WSACleanup();
return FALSE;
}

// setup for termination of sockets
pState->m_pfnSockTerm = &AfxSocketTerm;

#ifndef _AFXDLL
// setup maps and lists specific to socket state
_AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
if (pState->m_pmapSocketHandle == NULL)
pState->m_pmapSocketHandle = new CMapPtrToPtr;
if (pState->m_pmapDeadSockets == NULL)
pState->m_pmapDeadSockets = new CMapPtrToPtr;
if (pState->m_plistSocketNotifications == NULL)
pState->m_plistSocketNotifications = new CPtrList;
#endif
}

return TRUE;
}


因此,该函数只能初始化为1.1。

如果想初始化成2.0, 就编写一个类似的代码

AfxSocketInit20

简单地将上述代码中
WORD wVersionRequested = MAKEWORD(1, 1);
改成
WORD wVersionRequested = MAKEWORD(2, 0);
就可以了。

然后在自己的程序中调用 AfxSocketInit20.

18,356

社区成员

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

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