盘绰网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

PcShare2005的HTTP隧道的弊端

时间:2024/2/27作者:未知来源:盘绰网教程人气:


[摘要]INTERNET_FLAG_RELOAD)) { StopWork(); return FALSE; }INTERNET_BUFFERS BufferIn = {0}; ...

   INTERNET_FLAG_RELOAD))

{

   StopWork();

   return FALSE;

}

INTERNET_BUFFERS BufferIn = {0};

    BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );

BufferIn.dwBufferTotal = 1024 * 1024 * 1024 + 973741824;

if(!HttpSendRequestEx(m_PipeSend.hHttpFp,

   &BufferIn,NULL,HSR_INITIATE,0))

{

   StopWork();

   return FALSE;

}

return TRUE;

/////////////////////////////////////////////////////////////////////////////////////////////////////////

HttpSendRequest(m_PipeRecv.hHttpFp , NULL , 0 , NULL, 0))

有个这些都是POST方式建立的连接, 所以这里POST一个0字节, 因为这个m_PipeRecv是用来接收数据的, 不需要发送数据, 但是他能接收多少数据则由Pcshare里的HTTP响应头Content-Length的数值决定, 一但大于这个数值, 通信就会断开

HttpSendRequestEx里的HSR_INITIATE表示POST的数据, 用InternetWriteFile来发送, 这是POST大数据的方法, 前面有看到这句“BufferIn.dwBufferTotal = 1024 * 1024 * 1024 + 973741824;”, 这定义这个POST的数据大小, 这时候弊端就出来了, 如果我们远程监控的服务端发送的数据量大于了这个数值BufferIn.dwBufferTotal, 这个连接就会断开……

这时候我们发现, Content-Length和BufferIn.dwBufferTotal 都是32位的, 也就是只能传输4GB数据……, 超过了, 连接就会断开……, 而PcShare2005里对这两个数值的设置似乎还都不是最大的,当然了一般情况下, 我们不会用掉这么多的数据量

新版的PcShare应该是用socket模拟的HTTP协议, 抛弃了wininet API的方法吧.。 新版的也没有强调是双管道通信, 双管道其实是迫不得已的设计, wininet建立的通信管道不能交叉接收和发送数据, 所以用两个, 一个负责接收, 一个负责发送



关键词:  PcShare2005的HTTP隧道的弊端





Copyright © 2012-2018 盘绰网教程(http://www.panchuo.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版