下面这段代码的具体实现过程是什么?tcp包的拆分过程?思想流程,尽量详细些,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/21 18:10:41
if (LPIPHEADER->byProtocol == IPPROTO_TCP)
{
TCPHEADER = (LPTCP_HDR)&szBuffer[(LPIPHEADER->byVerLen & 0x0F)*4];
if (ntohs(TCPHEADER->wSrcPort) == 1863 ||
ntohs(TCPHEADER->wDestPort) == 1863)
{
nHeaderLen = (LPIPHEADER->byVerLen & 0x0F)*4 +
(ntohs(TCPHEADER->wLenFlag) >> 12) * 4;

lpData = (LPCSTR)&szBuffer[nHeaderLen] ;

if (strstr(lpData, "MSG") &&
strstr(lpData, "text/plain"))
{
nWLen = LdapUTF8ToUnicode(lpData,
nDataLen - nHeaderLen,
(LPWSTR)szData,
sizeof(szData));
WideCharToMultiByte(CP_ACP,
WC_COMPOSITECHECK,
szData,
nWLen,
szBuffer,
sizeof(szBuffer),
NULL,
NULL);
int nSize = GetWindowTextLength(hBox) + strlen(szBuffer) + 1;
pBuffer = (char*)malloc(nSize);

你这是收到IP包后处理TCP内容的片段吧
首先了解IP、TCP的定义的结构体
这就把TCP结构体的数据读出来,匹配处理,再输出嘛

你还没粘贴的代码中应该有receive()函数处理收到的IP包,收到IP包后,LPIPHEADER指向报头,读结构体里的各个数据就是了
TCPHEADER->wSrcPort源地址
TCPHEADER->wDestPort目的地址
...都是结构里的东西