资源简介
花了5小时++编的使用C++程序实现HDLC协议的相关内容,之前有位朋友也编了个程序,不过其效果不敢苟同啊,这样才是我觉得应该自己编一个放在网上,供大家分享指正。谢谢啊!
代码片段和文件信息
#include
#include
#include
typedef struct cNode{ //定义一个结构体
char byData; //节点存储的数据
struct cNode* pNext;//指针:指向下一个节点
struct cNode* pLast;//指针:指向前一个节点
}cNode;
cNode* fnCreat(cNode* pListHead) //建立一个链表
{
cNode *pNewNode *pListNode; //声明链表的指针,分别是新建的节点指针、当前节点指针、链表表头指针;
char byInputNodeData;//声明一个字符变量,用于暂时存储节点数据的输入;
fflush(stdin);//情空键盘缓冲区数据;
scanf(“%c“ &byInputNodeData);
while(byInputNodeData != ‘\n‘)//如果输入字符不是“回车/换行符”则创建一个新节点并存储该输入,然后将节点加入到链表的尾部
{
if(byInputNodeData == ‘0‘|byInputNodeData == ‘1‘)
{
pNewNode = (cNode*)malloc(sizeof(cNode));//创建新节点
pNewNode->byData = byInputNodeData;
pNewNode->pNext = NULL;
pNewNode->pLast = NULL;
if(pListHead == NULL)//如果链表为空链表则建立第一个节点;
{
pListHead = pNewNode;
pListNode = pListHead;
}
else//如果不是空链表则在后续加入新节点;
{
pListNode->pNext = pNewNode;
pNewNode->pLast = pListNode;
pListNode = pNewNode;
};
};
scanf(“%c“ &byInputNodeData);//继续读入下一个字节数据,每次仅读取一个自己,剩余字节将会暂存在键盘的输入缓冲区。
}
return(pListHead);//返回链表表头指针;
}
cNode* fnReceive(cNode* pListHead) //接收的0/1比特序列,即由链表pListHead模拟的串行数据;
//HDLC的串行输入数据处理,即每5位连1后面如果有一个0则把它去掉;
{
cNode *pChange *pListNode = pListHead;
int nCount = 0;
while(pListNode != NULL)
{
if(pListNode->byData == ‘1‘ && nCount < 5)
{
nCount ++;
pListNode = pListNode->pNext ;
}
else
{
if(pListNode->byData == ‘0‘&& nCount < 5)
{
nCount = 0;
pListNode = pListNode->pNext;
}
if(pListNode->byData == ‘0‘ &&nCount == 5)
{
nCount = 0;
pChange = pListNode->pLast;
pChange->pNext = pListNode->pNext;
pChange = pListNode->pNext;
pChange->pLast = pListNode->pLast;
pChange = pListNode;
pListNode = pChange->pNext ;
free(pChange);
}
else
return (pListHead);
}
}
return(pListHead);
}
cNode* fnSend(cNode* pListHead) //发送的0/1比特序列,即由链表pListHead模拟的串行数据;HDLC的串行输出数据处理,即每5位连1后面加一个0;
{
cNode *pChange*pNewNode *pListNode = pListHead;
int nCount = 0;
while(pListNode->pNext != NULL)
{
if(pListNode->byData == ‘1‘ && nCount < 5)
{
nCount ++;
pListNode = pListNode->pNext ;
}
else
{
if(pListNode->byData == ‘0‘)
{
nCount = 0;
pListNode = pListNode->pNext ;
}
else if(pListNode->byData == ‘1‘ &&nCount == 5)
{
nCount = 0;
pNewNode = (cNode*)malloc(sizeof(cNode));
pNewNode->byData = ‘0‘;
pNewNode->pNext = pListNode;
pNewNode->pLast = pListNode->pLast;
pChange = pNewNode->pLast;
pChange->pNext = pNewNode;
pListNode->pLast = pNewNode;
}
}
}
return(pListHead);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 652 2011-10-06 21:18 HDLC程序\Debug\cl.command.1.tlog
文件 1850 2011-10-06 21:18 HDLC程序\Debug\CL.read.1.tlog
文件 290 2011-10-06 21:18 HDLC程序\Debug\CL.write.1.tlog
文件 1657 2011-10-06 19:24 HDLC程序\Debug\hdlc.Build.CppClean.log
文件 455680 2011-10-06 21:18 HDLC程序\Debug\hdlc.exe
文件 406 2011-10-06 19:25 HDLC程序\Debug\hdlc.exe.em
文件 472 2011-10-06 19:25 HDLC程序\Debug\hdlc.exe.em
文件 381 2011-10-06 21:18 HDLC程序\Debug\hdlc.exe.intermediate.manifest
文件 1019416 2011-10-06 21:18 HDLC程序\Debug\hdlc.ilk
文件 65 2011-10-06 21:18 HDLC程序\Debug\hdlc.lastbuildstate
文件 2865 2011-10-06 21:18 HDLC程序\Debug\hdlc.log
文件 8895 2011-10-06 21:18 HDLC程序\Debug\hdlc.obj
文件 1969152 2011-10-06 21:18 HDLC程序\Debug\hdlc.pdb
文件 204 2011-10-06 19:25 HDLC程序\Debug\hdlc_manifest.rc
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 2 2011-10-06 21:18 HDLC程序\Debug\li
文件 1348 2011-10-06 21:18 HDLC程序\Debug\li
文件 2932 2011-10-06 21:18 HDLC程序\Debug\li
文件 684 2011-10-06 21:18 HDLC程序\Debug\li
文件 360 2011-10-06 21:18 HDLC程序\Debug\mt.command.1.tlog
文件 278 2011-10-06 21:18 HDLC程序\Debug\mt.read.1.tlog
文件 278 2011-10-06 21:18 HDLC程序\Debug\mt.write.1.tlog
............此处省略24个文件信息
- 上一篇:pcap数据包 DNS解析
- 下一篇:ob
jectARX中文版.chm
评论
共有 条评论