我的系统是WinXP SP2,VC6.0,新建了一个MFC工程,mstcpip.h头文件也包含了,
WinSock2.h也包含了,ws2_32.lib 也包含了,Socket创建也没问题,为什么我在用
WSAIoctl的时候就是不对呢,WSAGetLastError返回的错误是10022,这是什么问题呢??
源程序如下:
int iErrorCode;
iErrorCode = WSAStartup(MAKEWORD(2,1),&wsaData);
CheckSockError(iErrorCode);
SockRaw = socket(PF_INET, SOCK_RAW, IPPROTO_IP);
CheckSockError(SockRaw);
//获取本机IP地址
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6666);
iErrorCode = bind(SockRaw, (PSOCKADDR)&addrSrv, sizeof(addrSrv));
CheckSockError(iErrorCode);
//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
DWORD dwBufferLen[10];
DWORD dwBufferInLen = 1;
DWORD dwBytesReturned = 0;
iErrorCode = WSAIoctl(SockRaw, SIO_RCVALL,&dwBufferInLen, sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned, NULL, NULL); //就是这里的问题!!
iErrorCode = WSAGetLastError();
return 0;
希望各位大虾帮帮忙吧,小妹在这里跪谢了!!!
WinSock2.h也包含了,ws2_32.lib 也包含了,Socket创建也没问题,为什么我在用
WSAIoctl的时候就是不对呢,WSAGetLastError返回的错误是10022,这是什么问题呢??
源程序如下:
int iErrorCode;
iErrorCode = WSAStartup(MAKEWORD(2,1),&wsaData);
CheckSockError(iErrorCode);
SockRaw = socket(PF_INET, SOCK_RAW, IPPROTO_IP);
CheckSockError(SockRaw);
//获取本机IP地址
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6666);
iErrorCode = bind(SockRaw, (PSOCKADDR)&addrSrv, sizeof(addrSrv));
CheckSockError(iErrorCode);
//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
DWORD dwBufferLen[10];
DWORD dwBufferInLen = 1;
DWORD dwBytesReturned = 0;
iErrorCode = WSAIoctl(SockRaw, SIO_RCVALL,&dwBufferInLen, sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned, NULL, NULL); //就是这里的问题!!
iErrorCode = WSAGetLastError();
return 0;
希望各位大虾帮帮忙吧,小妹在这里跪谢了!!!
没有什么错误啊
WSAGetLastError返回的错误是10022 是accept()进行连接时出错。
端口被其他程序使用?
// Copyright (C) Microsoft Corporation, 1996-1999
#if _MSC_VER > 1000
#pragma once
#endif/* Argument structure for SIO_KEEPALIVE_VALS */struct tcp_keepalive {
u_long onoff;
u_long keepalivetime;
u_long keepaliveinterval;
};// New WSAIoctl Options#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
#define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2)
#define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3)
#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4)
#define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5)
#define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6)
#define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7)
#define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8)
#define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9)
#define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10)
#define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11)