使用winsock spi在WSPSend函数中修改http请求头时遇到问题,怎样给lpBuffers重新赋值?

逆流的鱼无所谓 发布于 2015/12/01 11:56
阅读 157
收藏 0

@沉没捕鱼 你好,想跟你请教个问题:


大家好,我想通过lsp修改http请求头里的某些内容,在WSPSend里这样操作:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
intmodifyFunc(constchar*httpHeaderStr,intheaderSize,char*&newHeader);
intWSPAPI MyWSPSend(
    SOCKET          s,
    LPWSABUF        lpBuffers,
    DWORD          dwBufferCount,
    LPDWORD        lpNumberOfBytesSent,
    DWORD          dwFlags,
    LPWSAOVERLAPPED lpOverlapped,
    LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
    LPWSATHREADID   lpThreadId,
    LPINT          lpErrno
)
{
  //一些操作
  ...
  char*newBuf=NULL;
  intnewSize=modifyFunc(lpBuffers[0].buf,lpBuffers[0].len,newBuf);//modifyFunc会给newBuf分配空间,填充新内容,并返回newBuf的长度
  char* oldBuf=lpBuffers[0].buf;
  lpBuffers[0].buf=newHeader;
  lpBuffers[0].len=newsize;
  delete[] oldBuf;
  intiRet= g_NextProcTable.lpWSPSend(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags, lpOverlapped, lpCompletionRoutine, lpThreadId, lpErrno);
  returniRet;
}
你好,看到以前也提到过这种问题,我也这样写了,但是会造成网页无法访问的情况,我在WSARecv中进行重定向操作没问题,但是在WSASend中 试图修改网页 始终无法成功,你看能帮下忙么 看大概是什么原因

加载中
0
开发001

人才,你是写java的吧?

返回顶部
顶部