ppp协议编码与解码

时间:2026-01-20

ppp协议编码与解码

编码就是按照前面所说的对需要转义的字符进行变换,下面是简单的实现代码: 001 #define PPP_FRAME_FLAG 0x7e /* 标志字符 */

002 #define PPP_FRAME_ESC 0x7d /* 转义字符 */

003 #define PPP_FRAME_ENC 0x20 /* 编码字符 */

004 #define BUF_LEN 1500

005 /* return: bytes encoded */

006 int pppEncode(unsigned char * buf, int len) {

007 unsigned char * pi, * po;

008 int i, olen;

009 unsigned char obuf[BUF_LEN];

010 if(len > (BUF_LEN>>1)) {

011 return -1;

012 }

013 memset(obuf, 0, BUF_LEN);

014 pi = buf;

015 po = obuf;

016 olen = len;

017 for(i=0; i<len; i++) {

018 /* byte needs encode, encode it */

019 if(*pi == PPP_FRAME_FLAG

020 || *pi == PPP_FRAME_ESC

021 || *pi < 0x20) {

022 *po = PPP_FRAME_ESC;

023 po++;

024 olen++;

025 /* xor the 6th bit */

026 *po = *pi ^ PPP_FRAME_ENC;

027 }

028 else {

029 *po = *pi;

030 }

031 pi++;

032 po++;

033 }

034 memcpy(buf, obuf, olen);

035 return olen;

036 }

001~003: 定义标志字符,转义字符和编码字符。

010~012: 检查要编码的字符长度,按最坏情况,一个字符会编码成两个字符,所以这里只能编码最大缓冲区长度一半。

018~027: 编码的主要实现,遇到标志字符,转义字符和小于0x20的控制字符,都要进行编码。方法就是在其前面插入一个转义字符0x7d,然后对其第6位取补码。

028~030: 其他字符,不做任何修改。

034~035: 修改缓冲区,返回编码后的字符长度。

ppp协议编码与解码.doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:4.9 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:19元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219