已加入在工程中加入ws2_32.lib 而且 #include <winsock2.h>,
而且加入如下代码,
if (WSAStartup(MAKEWORD(2,2),&wsaData) != 0){ 
  //fprintf(stderr,"WSAStartup failed: %d\n",GetLastError()); 
  //ExitProcess(STATUS_FAILED); 
return 1;
    } 
,可为什么以前使用#include <winsock.h>时,编译通过,只不过运行到
rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)返回错误值10013,
后来由于了解到WinSock 2.0以上的实现才支持SOCK_RAW,换为#include <winsock2.h>,编译连接错误都有几十个!

解决方案 »

  1.   

    首先你是用的WIN2000吗?
    其次,SOCK_RAW不是你那么用地,需要调用WSAIoctl地
      

  2.   

    用的是2000,调用WSAIoctl是做什么,我在msdn中的ping程序没看见她的调用亚?
      

  3.   

    如果你新建工程时,选择了winsock支持,就默认的加入了#include <winsock.h>,这样你再#include <winsock2.h>就会有很多重复定义你需要把加了这些的文件找到,然后注释掉好像是在winafx.h里面就有
      

  4.   

    哦,是stdAfx.h中#include <afxsock.h> // MFC socket extensions
    afxsock.h里include了winsock.h
      

  5.   

    #include <afxsock.h>倒是找到了,可不好删相关文件呀!
      是不是意味着我必须重新编一个,然后不选择winsock支持呢?
      请回答,3x!
      

  6.   

    #include <afxsock.h>倒是找到了,可不好删相关文件呀!
      是不是意味着我必须重新编一个,然后不选择winsock支持呢?
      请回答,3x!
      

  7.   

    我这样做了,并在//#include <afxsock.h>后加上#include<winsock2.h>,
    比较有效,错误都没有了,却仍有一个,既显示icmpsocket=WSASocket (AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL, 0,0)有错:WSASocket' : undeclared identifier!
      工程已加ws2_32.lib并用WinSock 2.2版本
      怎么回事呢?