SPI的WSPSendto()函数中怎么解析出源IP
我在SPI中写了个WSPSendto()函数,
我想在函数中获得发出数据包的源IP和目的IP
然后用源IP和本地IP(用gethostbyname获取的)比较
看看此包中的IP是否为发包程序伪造的,
问题来了:怎么在WSPSendto()中获得数据包中的源IP
int WSPAPI WSPSendTo(
SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesSent,
DWORD dwFlags,
const struct sockaddr FAR * lpTo,
int iTolen,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
LPWSATHREADID lpThreadId,
LPINT lpErrno
)
{
ODS1(L"%s试图发包", g_szCurrentApp);
SOCKADDR_IN sa = *(SOCKADDR_IN*)lpTo;
sa.sin_addr.S_un;//其中存的是目的IP
?? ??? //怎么获得数据包中的源IP,
//以便和真实IP比较
if(数据包中的源IP!=gethostbyname获得的本地真实IP)
{
int iError;
g_NextProcTable.lpWSPShutdown(s, SD_BOTH, &iError);
*lpErrno = WSAECONNABORTED;
ODS(L" deny a sendto ");
return SOCKET_ERROR;
}*/
return g_NextProcTable.lpWSPSendTo(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags, lpTo
, iTolen, lpOverlapped, lpCompletionRoutine, lpThreadId, lpErrno);
}