![模仿數(shù)據(jù)鏈路層停等協(xié)議_第1頁(yè)](http://file4.renrendoc.com/view/08516f261afa71c292eee5e2db679417/08516f261afa71c292eee5e2db6794171.gif)
![模仿數(shù)據(jù)鏈路層停等協(xié)議_第2頁(yè)](http://file4.renrendoc.com/view/08516f261afa71c292eee5e2db679417/08516f261afa71c292eee5e2db6794172.gif)
![模仿數(shù)據(jù)鏈路層停等協(xié)議_第3頁(yè)](http://file4.renrendoc.com/view/08516f261afa71c292eee5e2db679417/08516f261afa71c292eee5e2db6794173.gif)
![模仿數(shù)據(jù)鏈路層停等協(xié)議_第4頁(yè)](http://file4.renrendoc.com/view/08516f261afa71c292eee5e2db679417/08516f261afa71c292eee5e2db6794174.gif)
![模仿數(shù)據(jù)鏈路層停等協(xié)議_第5頁(yè)](http://file4.renrendoc.com/view/08516f261afa71c292eee5e2db679417/08516f261afa71c292eee5e2db6794175.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
對(duì)于一些初學(xué)網(wǎng)絡(luò)的人,老師突然叫你編一個(gè)模擬停等協(xié)議的程序,可能很多人都會(huì)茫然,我也如此,但是通過(guò)幾天的努力還是基本完成了任務(wù),具體如下:此程序運(yùn)行在.NETFRAMEWORK4.0以上,編譯平臺(tái)VS2010;程序界面如下:具體怎樣設(shè)計(jì)取決與編程的人主要操作過(guò)程:方法1:先創(chuàng)建一個(gè)VisualStudio解決方案,再在里面添加兩個(gè)Windows窗口應(yīng)用程序作為發(fā)送方和接收方;方法2:直接創(chuàng)建兩個(gè)Windows窗口應(yīng)用程序作為發(fā)送方和接收方;程序代碼如下:有的控件名稱(chēng)被修改過(guò)的所以不要直接復(fù)制要先修改控件名稱(chēng)程序有點(diǎn)亂,有的代碼無(wú)用,但對(duì)程序沒(méi)有多大影響發(fā)送方源代碼:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Net.Sockets;//usingSystem.Net;//引用Socket套接字namespace發(fā)送方{publicpartialclassfmSender:Form{Socketsocket;//套接字實(shí)例stringIP;//保存主機(jī)ipintPort;//保存端口IPEndPointiep;intZhenCount;//保存分幀數(shù)privatestring[]ZuZhen()//組á¨|幀?函?¥數(shù)oy{try{//stringmessage="";intcount=0;intj=0;ZhenCount=Convert.ToInt32(txtCount.Text);if(txtMsg.Text.Length%ZhenCount==0){count=txtMsg.Text.Length/ZhenCount;}else{count=txtMsg.Text.Length/ZhenCount+1;}string[]msg=newstring[count];for(inti=0;i<txtMsg.Text.Length;i++){if(i==0){msg[j]+=txtMsg.Text[i];}elseif(i%ZhenCount==0){j++;msg[j]+=txtMsg.Text[i];}else{msg[j]+=txtMsg.Text[i];}}//按???幀?數(shù)oy分¤?出?來(lái)¤??的ì?字á?符¤?數(shù)oy組á¨|for(intk=1;k<=count;k++){if(k==count){msg[k-1]="DLESTX"+msg[k-1]+"DLEETX"+"0";//以°?0為a結(jié)¨¢束o?幀?}else{msg[k-1]="DLESTX"+msg[k-1]+"DLEETX"+k;}}//組á¨|幀?for(inti=0;i<msg.Length;i++){if(msg[i]=="DLE"){msg[i].Replace("DLE","DLEDLE");}//message+=msg[i]+"";}//returnmessage;returnmsg;}catch(Exceptionex){MessageBox.Show("組á¨|幀?出?錯(cuò)?¨a!ê?","系|ì統(tǒng)a3提?¨¢示o?",MessageBoxButtons.OK,MessageBoxIcon.Information);string[]str=newstring[]{ex.Message};returnstr;}}privatevoidBeginSend()//發(fā)¤?é送¨a函?¥數(shù)oy{string[]str=ZuZhen();rtbSendMsg.AppendText("發(fā)¤?é送¨a信?息?é:êo"+txtMsg.Text+""+DateTime.Now.ToString()+"\r\n");//下?為a傳??輸o?byte[]byteMessage;//出?現(xiàn)?異°¨?常?êfor(inti=0;i<str.Length;i++){socket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPAddressserverIp=IPAddress.Parse(IP);intserverPort=Convert.ToInt32(Port);iep=newIPEndPoint(serverIp,serverPort);socket.Connect(iep);byteMessage=Encoding.ASCII.GetBytes(str[i]);socket.Send(byteMessage);socket.Shutdown(SocketShutdown.Both);socket.Close();}}publicfmSender(){InitializeComponent();}privatevoidtextBox2_TextChanged(objectsender,EventArgse){IP=txtIp.Text;}privatevoidfmSender_Load(objectsender,EventArgse){txtPort.Text="80";IPAddress[]ip=Dns.GetHostAddresses(Dns.GetHostName());txtIp.Text=ip[0].ToString();IP=txtIp.Text;Port=Convert.ToInt32(txtPort.Text);//獲?取¨?本à?地ì?主??機(jī)¨2IPtxtCount.Text="2";//初?始o(jì)?幀?為a2}privatevoidbtnSend_Click(objectsender,EventArgse){try{BeginSend();txtMsg.Text="";}catch(Exceptionex){Console.WriteLine(ex.Message);}}privatevoidtxtPort_TextChanged(objectsender,EventArgse){Port=Convert.ToInt32(txtPort.Text);}privatevoidtxtCount_TextChanged(objectsender,EventArgse){ZhenCount=Convert.ToInt32(txtCount.Text);}privatevoidbutton1_Click(objectsender,EventArgse){rtbSendMsg.Clear();}}}接收方源代碼:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Net.Sockets;usingSystem.Net;usingSystem.Threading;//引用線程namespace接收方{publicpartialclassForm1:Form{Threadmythread;stringIP;intPort;Socketsocket;IPEndPointiep;stringMessage;publicdelegatevoidmydeleget(Socketsocket);mydelegetmy=null;publicdelegatevoiddeleget1(inti);publicdelegatevoiddeleget2(stringstr);deleget1del1=null;deleget2del2=null;SocketnewSocket;intj=0;privatestringFenZhen(refstringend)//分幀函數(shù){stringstr="";try{string[]msg=Message.Split(newChar[]{''});for(inti=0;i<msg.Length;i++){//richTextBox1.AppendText("第"+i+"幀:"+Zhen[i]+"\r\n");if(msg[i]=="DLEDLE"){msg[i].Replace("DLEDLE","DLE");}}str+=msg[2];end=msg[5];returnstr;}catch(Exceptionex){returnex.Message;}}//publicvoidGo(Socketsocket){inti=0;stringend1="-1";stringstr=null;stringsTime;stringmsg;byte[]byteMessage=newbyte[100];//存放接收到的信息try{while(true){/*newSocket.Receive(byteMessage);sTime=DateTime.Now.ToShortTimeString();msg=sTime+"-"+"信息來(lái)自:";Message=Encoding.Default.GetString(byteMessage).Trim(newchar[]{'\0'});//將接收到的信息轉(zhuǎn)化為字符串//msg+=newSocket.RemoteEndPoint.ToString()+""+FenZhen();if(richTextBox1.InvokeRequired){my=newmydeleget(Go);this.Invoke(my,newobject[]{socket});}else{richTextBox1.AppendText("第"+i+"幀:"+Message+"\r\n");}str+=FenZhen(refend1);*/while(end1!="0"){i++;newSocket=socket.Accept();socket.Listen(5);newSocket.Receive(byteMessage);sTime=DateTime.Now.ToShortTimeString();msg=sTime+"-"+"信息來(lái)自:";Message=Encoding.Default.GetString(byteMessage).Trim(newchar[]{'\0'});//將接收到的信息轉(zhuǎn)化為字符串//msg+=newSocket.RemoteEndPoint.ToString()+""+FenZhen();if(richTextBox1.InvokeRequired){//my=newmydeleget(Go);//this.Invoke(my,newobject[]{socket});del1=newdeleget1(f1);this.Invoke(del1,newobject[]{i});}else{richTextBox1.AppendText("第"+i+"幀:"+Message+"\r\n");}str+=FenZhen(refend1);}if(i!=0){if(richTextBox2.InvokeRequired){del2=newdeleget2(f2);this.Invoke(del2,newobject[]{str});}else{richTextBox2.AppendText("接收到的信息:"+str+""+DateTime.Now.ToString()+"\r\n");}}i=0;end1="-1";str="";}}catch(Exceptionex){Console.WriteLine(ex.Message);}}publicvoidf1(inti){richTextBox1.AppendText("第"+i+"幀:"+Message+"\r\n");}publicvoidf2(stringstr){richTextBox2.AppendText("接收到的信息:"+str+""+DateTime.Now.ToString()+"\r\n");}//publicvoidBeginListen()//開(kāi)始偵聽(tīng){Thread.Sleep(10);socket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);IPAddressip1=IPAddress.Parse(IP);iep=newIPEndPoint(ip1,Port);toolStripLabel1.Text=iep.ToString()+"正在偵聽(tīng)...";socket.Bind(iep);socket.Listen(5);Go(socket);}/*if(richTextBox1.InvokeRequired){my=newmydeleget(BeginListen);this.Invoke(my);}else{richTextBox2.Append
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)低年級(jí)聽(tīng)評(píng)課記錄
- 【人教版】八年級(jí)地理上冊(cè)第一章第二節(jié)《人口》聽(tīng)課評(píng)課記錄及優(yōu)化訓(xùn)練答案
- 蘇州蘇教版六年級(jí)數(shù)學(xué)上冊(cè)第三單元《分?jǐn)?shù)應(yīng)用題(1)》聽(tīng)評(píng)課記錄
- 聽(tīng)評(píng)課記錄六年級(jí)語(yǔ)文
- 新版華東師大版八年級(jí)數(shù)學(xué)下冊(cè)《16.2.2分式的加減分式的加減-同分母分式加減》聽(tīng)評(píng)課記錄16
- 小學(xué)二年級(jí)數(shù)學(xué)100道口算題
- 蘇科版七年級(jí)數(shù)學(xué)上冊(cè)《2.2有理數(shù)與無(wú)理數(shù)》聽(tīng)評(píng)課記錄
- 北師大版道德與法治七年級(jí)下冊(cè)1.2《理解情緒》聽(tīng)課評(píng)課記錄
- 八年級(jí)歷史人教版下冊(cè)聽(tīng)課評(píng)課記錄:第9課 對(duì)外開(kāi)放
- 校企共建培訓(xùn)中心合作協(xié)議書(shū)范本
- 2024電力建設(shè)工程質(zhì)量問(wèn)題通病防止手冊(cè)
- 大學(xué)生就業(yè)指導(dǎo)教學(xué)-大學(xué)生就業(yè)形勢(shì)與政策
- 第五講鑄牢中華民族共同體意識(shí)-2024年形勢(shì)與政策
- 中華人民共和國(guó)學(xué)前教育法
- 2024年貴州公務(wù)員考試申論試題(B卷)
- 三年級(jí)(下冊(cè))西師版數(shù)學(xué)全冊(cè)重點(diǎn)知識(shí)點(diǎn)
- 期末練習(xí)卷(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 2025年公務(wù)員考試申論試題與參考答案
- 抑郁癥課件教學(xué)課件
- 關(guān)于消防安全評(píng)估設(shè)備操作說(shuō)明詳解
- 2009年公務(wù)員國(guó)考《申論》真題卷及答案(地市、副省)
評(píng)論
0/150
提交評(píng)論