Unhandled exception at 0x0041ad9c in Spider.exe: 0xC0000005: Access violation writing location 0x00000000
int CDzSocket::InitializeSocket(WORD sockver, int port)
{
WSADATA wsadata;
if(WSAStartup(sockver,&wsadata)!=0)
{
return WSAGetLastError();
}
if(LOBYTE(wsadata.wVersion)!=LOBYTE(sockver)||
HIBYTE(wsadata.wVersion)!=HIBYTE(sockver))
{
WSACleanup();
return WSAGetLastError();
}
int err;
m_socket = socket(AF_INET,SOCK_RAW,IPPROTO_IP);//总说此处有错:(Unhandled exception at 0x0041ad9c in Spider.exe: 0xC0000005: Access violation writing location 0x00000000.)
if(m_socket==INVALID_SOCKET)
return WSAGetLastError();
char name[MAX_HOSTNAME_LEN];
err = gethostname(name, MAX_HOSTNAME_LEN);
if(err==SOCKET_ERROR)
return WSAGetLastError();
struct hostent FAR * pHostent;
pHostent = gethostbyname(name);
SOCKADDR_IN sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(port);
memcpy(&sa.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length);
err = bind(m_socket, (PSOCKADDR)&sa, sizeof(sa));
if(err==SOCKET_ERROR)
return WSAGetLastError();
BOOL bopt=TRUE;
err = setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (char*)&bopt, sizeof(bopt));
bopt = TRUE;
err = setsockopt(m_socket, IPPROTO_IP, IP_HDRINCL, (char*)&bopt, sizeof(bopt));
if(err==SOCKET_ERROR)
{
return WSAGetLastError();
}
// Set this option to receive all the IP packets.
DWORD dwBufferLen[10];
DWORD dwBufferInLen = 1;
DWORD dwBytesReturned = 0;
err = WSAIoctl(m_socket,
SIO_RCVALL,
&dwBufferInLen,
sizeof(dwBufferInLen),
dwBufferLen,
sizeof(dwBufferLen),
&dwBytesReturned,
NULL,
NULL);
if(err==SOCKET_ERROR)
return WSAGetLastError();
return 0;
}
(Unhandled exception at 0x0041ad9c in Spider.exe: 0xC0000005: Access violation writing location 0x00000000.)请教高手,如何解决,总分100