我用vc编嗅探器,编译时老出现这个问题
ipmonDlg.cpp
F:\daima\ipmon\ipmonDlg.cpp(543) : error C2065: 'WSAIoctl' : undeclared identifier
F:\daima\ipmon\ipmonDlg.cpp(543) : error C2065: '_WSAIOW' : undeclared identifier
F:\daima\ipmon\ipmonDlg.cpp(543) : error C2065: 'IOC_VENDOR' : undeclared identifier
Error executing cl.exe.我光盘上有原程序直接就可以编译成功,可是我手工配置就老出错,代码没区别,用mfc appwizard建立工程,选择基于对话框,并且包含windows socket支持.谁知道是什么问题,我的socket编程经验很少,急死我了!

解决方案 »

  1.   

    要包含Winsock2.h头文件,工程属性内还要链接Ws2_32.lib。
      

  2.   

    谢谢回帖,我在link的对象/库模块里面加了Ws2_32.lib,然后在我的**dlg.cpp里面加了头文件Winsock2.h可是又出现好多错误我截取一部分:
    :\安装文件夹\vc98\include\winsock2.h(99) : error C2011: 'fd_set' : 'struct' type redefinition
    f:\安装文件夹\vc98\include\winsock2.h(134) : warning C4005: 'FD_SET' : macro redefinition
            f:\安装文件夹\vc98\include\winsock.h(83) : see previous definition of 'FD_SET'
    f:\安装文件夹\vc98\include\winsock2.h(143) : error C2011: 'timeval' : 'struct' type redefinition
    f:\安装文件夹\vc98\include\winsock2.h(199) : error C2011: 'hostent' : 'struct' type redefinition
    f:\安装文件夹\vc98\include\winsock2.h(212) : error C2011: 'netent' : 'struct' type redefinition
    f:\安装文件夹\vc98\include\winsock2.h(219) : error C2011: 'servent' : 'struct' type redefinition
      

  3.   

    有没有初始化?
    WORD VersionRequested = MAKEWORD(2,2);
    WSADATA wsaData;

    err=WSAStartup(VersionRequested, &wsaData); // 启动winsock服务
    if(err!=0)
    {
    AfxMessageBox("初始化winsock失败!");
    return false;
    }
    if ( wsaData.wVersion != VersionRequested )
    {
    AfxMessageBox("Wrong version or WinSock not loaded");
    return false;
    }
      

  4.   

    你看看stdafx.h里是不是已经定义了Winsock2.h,那么**dlg.cpp里面就不要再加了。
      

  5.   

    我的 stdafx.h里面有#include <afxsock.h>,而afxsock.h里面有#ifndef __AFXSOCK_H__
    #define __AFXSOCK_H__#ifdef _AFX_NO_SOCKET_SUPPORT
    #error Windows Sockets classes not supported in this library variant.
    #endif#ifndef __AFXWIN_H__
    #include <afxwin.h>
    #endif#ifndef _WINSOCKAPI_
    #include <winsock2.h>
    #endif
    所以我想是这里重复定义了,我该怎么办...
      

  6.   

    我上面不是说了吗? 你看看stdafx.h里是不是已经定义了Winsock2.h,那么**dlg.cpp里面就不要再加了。
      

  7.   

    stdafx.h里面没有定义,但是如果在**dlg.cpp include <Winsock2.h>就显示:
    \安装文件夹\vc98\include\winsock2.h(99) : error C2011: 'fd_set' : 'struct' type redefinition
    f:\安装文件夹\vc98\include\winsock2.h(134) : warning C4005: 'FD_SET' : macro redefinition
            f:\安装文件夹\vc98\include\winsock.h(83) : see previous definition of 'FD_SET'
    f:\安装文件夹\vc98\include\winsock2.h(143) : error C2011: 'timeval' : 'struct' type redefinition
    f:\安装文件夹\vc98\include\winsock2.h(199) : error C2011: 'hostent' : 'struct' type redefinition
    f:\安装文件夹\vc98\include\winsock2.h(212) : error C2011: 'netent' : 'struct' type redefinition
    f:\安装文件夹\vc98\include\winsock2.h(219) : error C2011: 'servent' : 'struct' type redefinition大概在#include <afxsock.h>已经有定义了
      

  8.   

    dlg.cpp 不要加winsock2.h还有问题吗?
      

  9.   

    感谢各位大哥我又重作了一边现在已经成功运行!!
    问题大概就是Iphlpapi.lib 这个库没有连接进来,我以前只连接了ws2_32.lib!!