資源簡介
花了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
評論
共有 條評論