18,356
社区成员
发帖
与我相关
我的任务
分享
int WSPAPI WSPSend(
SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesSent,
DWORD dwFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
LPWSATHREADID lpThreadId,
LPINT lpErrno
)
{
//我在这里拦住一个包,然后做一些分析判断,要做到模拟该连接的目的端向源地址发送数据
//假设发现http请求中包含一些敏感字,就会返回一个提示页面(html是由我发送给他的,并不是实际的服务端返回的)
//目前我是调用Send(s, buffer, bufferLength, getsockname(s, (SOCKADDR*)&src_addr,&src_addr_len));的
}
下面是Send的实现
int Send(SOCKET s, const char *buf, int len, SOCKADDR_IN dest_addr)
{
_ASSERTE(len > 0);
int tmp_len;
int total_send=0;
do
{
tmp_len = sendto(s,buf,len,0,(SOCKADDR*)&dest_addr,sizeof(dest_addr)); //这里用send或sendto都不行,用抓包工具发现实际都是发送给socket中原目的地址的。
if(tmp_len == -1)
break;
len -= tmp_len;
buf += tmp_len;
total_send += tmp_len;
} while(len > 0);
return total_send;
}