在我的程序里
CSocket _socket;
_socket.Create();
……如果在_socket.Create()之前不调用一次AfxSocketInit()这个函数的话Create()这会失败但我看我在网上下回来的SMTP的程序好像就没有调用AfxSocketInit()这个函数也能使用CSocket通讯呀!这个AfxSocketInit()是不是一定要的呀?什么情况下可以不用呢?
CSocket _socket;
_socket.Create();
……如果在_socket.Create()之前不调用一次AfxSocketInit()这个函数的话Create()这会失败但我看我在网上下回来的SMTP的程序好像就没有调用AfxSocketInit()这个函数也能使用CSocket通讯呀!这个AfxSocketInit()是不是一定要的呀?什么情况下可以不用呢?
下面的东西,你觉得去掉能用CSocket吗?WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return FALSE;
}
{
_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;
}