SPI的WSPSendto()函数中怎么解析出源IP

guyuan123 2007-05-11 12:15:25
我在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);

}
...全文
463 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyuan123 2007-05-11
  • 打赏
  • 举报
回复
//上文中这个地方是如果判断了是非法包的话,阻止其发出
{
int iError;
g_NextProcTable.lpWSPShutdown(s, SD_BOTH, &iError);
*lpErrno = WSAECONNABORTED;
ODS(L" deny a sendto ");
return SOCKET_ERROR;
}

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧