我的通讯协议是:
传输信息标志+文件开始标志+结束标志+包号+传输数据+校验和
TCP自己不是有差错处理和丢包重传,那么TCP还要不要自己搞检验啊?UDP呢?
还有那个异或校验和累加校验算法怎么写啊?我查了资料可是还是不很懂啊!
是不是要一位一位的进行异或还是可以32BIT一起啊?而且我上面协议里面的最短的也是INT型的啊。
那么我的校验和应该是怎么类型的呢?
传输信息标志+文件开始标志+结束标志+包号+传输数据+校验和
TCP自己不是有差错处理和丢包重传,那么TCP还要不要自己搞检验啊?UDP呢?
还有那个异或校验和累加校验算法怎么写啊?我查了资料可是还是不很懂啊!
是不是要一位一位的进行异或还是可以32BIT一起啊?而且我上面协议里面的最短的也是INT型的啊。
那么我的校验和应该是怎么类型的呢?
如果我要重新发送不是和UDP的差不多了,我UDP发送过程中记录发送包的标号,如果出错了就记录包号码,最后文件传输完毕就把错误的包号码发送回去要求重新发送,直到文件传输正确。
那么我TCP要求回发怎么搞?是文件传输完毕了要求回发还是发送一个包检验再发送下一个包?
异或校验就是先把一个变量初始化为0,然后逐一与所有数据异或,最后得到的结果就是校验码。可以按BYTE处理数据,也可以按WORD或者DWORD,最后不足的地方补0即可。异或校验没有纠错能力,只有冗余校验才会有纠错能力。另外,异或校验是很简单的校验方式,对于使用TCP、UDP协议来说,增加这种校验没有实际作用,只能是降低效率。