今天学网络编程,第一个程序就难倒我了。我把书上的代码敲完后一编译,就提示: error C2065: 'WSDATA' : undeclared identifier。
我用光盘里面的代码打开一看,跟我的一样的,光盘里面的代码就能编译通过,我的就不行。找了半天发现WSDATA在winsock2.h里面定义,我第一行就包含了这个文件啊。如果改成包含WinSock2.h这个头文件,可以把WSDATA改成WSData,难道说虽然写了#include"winsock2.h",但是却没有真正包含进来?#include <winsock2.h>
//#include <WinSock2.h>#pragma comment(lib,"WS2_32")
class CInitSock
{
public:
CInitSock(BYTE minorVer=2,byte majorVer=2) //BYTE byte在两个不同的文件中而已,有何区别?
{
//初始化WS2_32.dll
WSDATA wsaData;
//WSAData wsaData;  //WSAData在头文件WinSock2.h中。
WORD sockVersion=MAKEWORD(minorVer,majorVer);
if(::WSAStartup(sockVersion,&wsaData)!=0)
{
exit(0);
} }
~CInitSock()
{
::WSACleanup();
}};