解析Tcp协议包头

   日期:2020-09-01     浏览:136    评论:0    
核心提示:解析Tcp协议包头(包头:0x7R7R1E1E)个人体会首先tcp协议的数据传输是一个数据流,也就是像水管一样的,一头是我们的水井,一头是用水的人,比如我们想要500L水,这时候打开水龙头,水是通过水管流出来的,在需要很多水的时候,我们需要慢慢的接,不可能一下子就有我们的500L期望量。代码首先自己也是学习的情况下,写下自己的心得,有错误的望提出,互相提升。下面展示一些 找头0x7R7R1E1E。下面展示一些 找头结构体信息。int FindNetHeader(char *buf,int le

解析Tcp协议包头(包头:0x7R7R1E1E)

个人体会

首先tcp协议的数据传输是一个数据流,也就是像水管一样的,一头是我们的水井,一头是用水的人,比如我们想要500L水,这时候打开水龙头,水是通过水管流出来的,在需要很多水的时候,我们需要慢慢的接,不可能一下子就有我们的500L期望量。

代码

首先自己也是学习的情况下,写下自己的心得,有错误的望提出,互相提升。
下面展示一些 找头0x7R7R1E1E
下面展示一些 找头结构体信息

int FindNetHeader(char *buf,int len)
{
    int i=0;
    
    for(i = 0;i<len-4;i++)
    {
        if(memcmp(buf+i,"\x1e\x1e\x7r\x7r",4) == 0)
        {
            break;
        }
    }
    return i;
}
int RecvTcpHeader(int socket_fd,Header head_std)
{
	int recvLen = 0;
	char recv_buff[128];
	memset(recv_buff,0,128);
	int head_len = sizeof(Header)
	int rtn;
	int whichHead;
	while(1)
	{
			rtn = recv(socket_fd,recv_buff+recvLen ,head_len -recvLen );
			if(rtn <= 0)
			{
				return 0;
			}
			else
			{
				recvLen +=rtn ;
				
				if(recvLen >= head_len )
				{
					whichHead = FindNetHeader(recv_buff,head_len )
					if(whichHead > 0)
	                {
	                    recvLen -= whichHead ;
	                    memmove(recvbuf,recvbuf+whichHead ,recvLen);
	                }
	                else//找到了头
	                {
	                    memcpy((char *)head_std,recv_buff,head_len);
	                    return recvLen;
	                }
				}
			}
	}
}

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服