版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 計算機(jī)網(wǎng)絡(luò)課程設(shè)計</b></p><p> ---基于TCP的點(diǎn)對點(diǎn)即時通信工具</p><p><b> 設(shè)計題目及設(shè)計目標(biāo)</b></p><p><b> 設(shè)計題目</b></p><p> 題目:實(shí)現(xiàn)一個基于網(wǎng)絡(luò)的應(yīng)用</p
2、><p> 要求:利用TCP或UDP完成聯(lián)網(wǎng)通信,并在此基礎(chǔ)上完成數(shù)據(jù)應(yīng)用。</p><p><b> 設(shè)計目標(biāo)</b></p><p> 這個軟件實(shí)現(xiàn)的功能主要包括局域網(wǎng)內(nèi)的點(diǎn)對點(diǎn)聊天(基本功能),局域網(wǎng)內(nèi)搜索IP并顯示,搜索任意IP段并顯示。應(yīng)用的主要范圍面向局域網(wǎng)。</p><p><b> 設(shè)計的思
3、路</b></p><p><b> 1.選用語言:C#</b></p><p> 2.使用的主要技術(shù):TcpClient,thread(線程)</p><p><b> 3.功能結(jié)構(gòu)圖。</b></p><p><b> 設(shè)計的實(shí)現(xiàn)</b></p&g
4、t;<p><b> 程序流程圖:</b></p><p><b> 連接不成功</b></p><p><b> 不為空</b></p><p><b> 為空</b></p><p><b> 連接成功</b&g
5、t;</p><p><b> 繼續(xù)聊天</b></p><p><b> 程序結(jié)束</b></p><p><b> 獲取本機(jī)IP模塊</b></p><p> 使用的C#的IPHOSTENTRY和IPADDRESS兩個類</p><p>
6、string hostname1 = Dns.GetHostName();</p><p> IPHostEntry myentry = Dns.GetHostByName(hostname1);</p><p> IPAddress myaddress = new IPAddress(myentry.AddressList[0].Address);</p><p&
7、gt; string myip = myaddress.ToString();</p><p> this.localip.Text = myip;</p><p> 用已經(jīng)獲取的本機(jī)的名字來獲取本機(jī)的IP。</p><p><b> 獲取局域網(wǎng)IP</b></p><p> int ipdot = myip.
8、LastIndexOf('.');</p><p> myip = myip.Substring(0,ipdot+1);</p><p> string aa = "0";//獲取本機(jī)的IP后,獲取最后一個.的位置,并且將這個.后面的數(shù)據(jù)替換成0和255,實(shí)現(xiàn)從局域網(wǎng)0-255的搜索</p><p> string bb =
9、 "255";</p><p> string startip = myip + aa;</p><p> string endip = myip + bb;</p><p> this.ipstart.Text = startip;</p><p> this.ipend.Text = endip;</p&
10、gt;<p> 搜索指定IP段的IP地址</p><p> 對輸入的IP段進(jìn)行搜索,</p><p> string ipcur = this.ipstart.Text;</p><p> int ipdot = ipcur.LastIndexOf('.');</p><p> string ippre
11、 = ipcur.Substring(0,ipdot+1);</p><p> for (int i = 0; i <= 3;i++ )</p><p><b> {</b></p><p> MessageBox.Show("開始搜索");</p><p> string scanip
12、 = ippre + i.ToString();</p><p> IPAddress myscanip = IPAddress.Parse(scanip); </p><p> IPHostEntry myscanhost = null;</p><p><b> try </b></p><p><b&g
13、t; { </b></p><p> myscanhost = Dns.GetHostByAddress(myscanip); </p><p><b> } </b></p><p><b> catch </b></p><p><b> { </b>
14、</p><p> continue; </p><p><b> }</b></p><p> if (myscanhost.HostName != null)</p><p><b> {</b></p><p> MessageBox.Show("搜
15、索到一個結(jié)果");</p><p> this.ipbox.Items.Add("可用IP:");</p><p> this.ipbox.Items.Add(scanip);</p><p> this.ipbox.Items.Add("此IP的主機(jī)名:");</p><p> th
16、is.ipbox.Items.Add(myscanhost.HostName);</p><p><b> } </b></p><p><b> 運(yùn)行截圖: </b></p><p> 在程序啟動時同時啟動另一個線程作為服務(wù)器</p><p> C/S模式都有服務(wù)器和客戶端之分,在這
17、個程序中服務(wù)器端被簡化了,服務(wù)器程序不具有主動的功能,只能對端口進(jìn)行監(jiān)聽并且修改主進(jìn)程的控件。</p><p> private void Form1_Load(object sender, EventArgs e)</p><p><b> {</b></p><p> Control.CheckForIllegalCrossThrea
18、dCalls = false;</p><p> Thread server = new Thread(new ThreadStart(serverfuntion));</p><p> server.IsBackground = true;</p><p> server.Start();</p><p><b> }&l
19、t;/b></p><p> private void serverfuntion()</p><p><b> {</b></p><p> DateTime dt = new DateTime();</p><p> dt = DateTime.Now;</p><p> if
20、 (this.scanedip.Text != null)</p><p><b> {</b></p><p> TcpListener mylis = new TcpListener(IPAddress.Any, 51888);</p><p> mylis.Start();</p><p> while (
21、true)</p><p><b> {</b></p><p> TcpClient mytcp = new TcpClient();</p><p> mytcp = mylis.AcceptTcpClient();// MessageBox.Show("連接建立成功!");</p><p>
22、; NetworkStream mystream = mytcp.GetStream();</p><p> StreamReader sr = new StreamReader(mystream); // MessageBox.Show("流建立成功!");</p><p> string received = "";</p>
23、<p> received = sr.ReadToEnd();// MessageBox.Show("消息接受成功!");</p><p> if (received != null)</p><p><b> {</b></p><p> this.messagegeted.Items.Add(dt);&
24、lt;/p><p> this.messagegeted.Items.Add(received);</p><p> }//MessageBox.Show("文本框修改成功!");</p><p> sr.Close();</p><p> mystream.Close();</p><p>
25、 mytcp.Close();//MessageBox.Show("流關(guān)閉,連接關(guān)閉!");</p><p><b> }</b></p><p><b> }</b></p><p> 連接指定IP地址,并且進(jìn)行數(shù)據(jù)傳輸</p><p><b> 連接指定IP
26、</b></p><p> private void button2_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> IPAddress myip = IPAddress.Parse(this.localip.Text.ToString());<
27、/p><p> IPAddress toip = IPAddress.Parse(this.scanedip.Text.ToString());</p><p> TcpClient mytcp = new TcpClient();</p><p><b> try </b></p><p><b> {
28、</b></p><p> mytcp.Connect(toip, 51888); </p><p><b> }</b></p><p> catch (SocketException) </p><p><b> { </b></p><p> Me
29、ssageBox.Show("該IP不存在!"); </p><p><b> }</b></p><p> this.connectinfo.Items.Add("正在連接IP:");</p><p> this.connectinfo.Items.Add(toip);</p>&l
30、t;p> if (mytcp.Connected == true)</p><p><b> {</b></p><p> this.connectinfo.Items.Add("連接成功!");</p><p> this.send.Enabled = true;</p><p>
31、mytcp.Close();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> this.connectinfo.Items.Add("連接失?。?quot;);</
32、p><p> this.send.Enabled = false;</p><p><b> }</b></p><p><b> }</b></p><p><b> 運(yùn)行截圖:</b></p><p><b> 數(shù)據(jù)傳輸</b&
33、gt;</p><p> private void send_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> DateTime dt = new DateTime();</p><p> dt = DateTime.Now;</p&
34、gt;<p> IPAddress myip = IPAddress.Parse(this.localip.Text.ToString());</p><p> IPAddress toip = IPAddress.Parse(this.scanedip.Text.ToString());</p><p> TcpClient mytcp = new TcpClient
35、();</p><p> mytcp.Connect(toip,51888);//MessageBox.Show("連接建立!");</p><p> NetworkStream mystream = mytcp.GetStream();//數(shù)據(jù)流建立</p><p> string message1 = this.sendmessage.
36、Text;</p><p> string message2 = this.localip.Text;</p><p> string message3 = message1 + " 本條消息來自于:" + message2;</p><p> string message4 = "你悄悄的對" + this.scan
37、edip.Text + "說:" + message1;</p><p> this.messagegeted.Items.Add(dt);</p><p> this.messagegeted.Items.Add(message4);</p><p> byte[] sendmessage1 = System.Text.Encoding.
38、UTF8.GetBytes(message3);</p><p> mystream.Write(sendmessage1,0,sendmessage1.Length);</p><p> mystream.Close();//關(guān)閉數(shù)據(jù)流</p><p> mytcp.Close();//關(guān)閉連接</p><p> this.send
39、message.Clear();//MessageBox.Show("消息發(fā)送成功!");</p><p><b> }</b></p><p><b> 運(yùn)行截圖:</b></p><p><b> 課程設(shè)計過程總結(jié)</b></p><p><
40、b> 程序總結(jié)</b></p><p> 程序?qū)崿F(xiàn)的功能比較簡單,只有搜索IP和點(diǎn)對點(diǎn)聊天,其中搜索IP速度很慢,大概要用3秒左右才能搜索一個IP,暫時還沒有解決這個問題,總體上達(dá)到了課程設(shè)計的目標(biāo),要求的功能基本都實(shí)現(xiàn)了。在后續(xù)的功能增強(qiáng)中,會逐步添加群聊還有添加好友的功能,登錄界面也要用數(shù)據(jù)庫進(jìn)行管理,依靠每個人的數(shù)據(jù)庫數(shù)據(jù)有不同的登錄界面和好友。</p><p>
41、; 遇到的問題和解決過程</p><p> 遇到的問題主要是兩個,一個是C/S模式都是要一個客戶端一個服務(wù)端,如何讓他們在一個程序中實(shí)現(xiàn);一個是對TCPCLIENT的使用不太熟悉,之前沒有用到過。對于TCPCLIENT的學(xué)習(xí)是自己找資料還有在網(wǎng)上看實(shí)例學(xué)會的,當(dāng)時和SOCKET有點(diǎn)弄混了,所以在剛開始的時候出了點(diǎn)小問題,隨著對tcpclient的理解的加深問題就解決了。另外一個問題是用線程來解決的,這個方法是
42、參考了網(wǎng)上的高手給的辦法,但是用線程是不能更改主線程的控件的,還要加上一句類似聲明的代碼,這一句代碼看似簡單,實(shí)際上我找到代碼并且測試成功用了將近一個小時的時間。在發(fā)現(xiàn)問題,解決問題的過程中,我的知識儲備也是愈加的豐富,在和同學(xué)們的交流中也學(xué)習(xí)到了很多知識和很多很好的想法。</p><p> 在這里對191072班的劉錦權(quán)同學(xué)提出特別感謝,他教給我線程和事件的使用方法。</p><p>
43、<b> 課程設(shè)計感想</b></p><p> 通過幾天緊張有序的忙碌,網(wǎng)絡(luò)課程設(shè)計程序終于出爐了?;谖覀冎皩CP的學(xué)習(xí)和理解,加上在自己買的資料中進(jìn)行學(xué)習(xí),在程序中應(yīng)用TCP連接還是不太難的。TCP強(qiáng)大的功能和使之實(shí)現(xiàn)的簡潔的代碼給我留下了很深刻的印象,在以后的學(xué)習(xí)生活中還要進(jìn)一步進(jìn)行學(xué)習(xí)。這一次網(wǎng)絡(luò)課程設(shè)計深化了我對TCP的理解,也對經(jīng)常要使用的C/S模式有了一定的了解,鍛煉
44、了C++的編程動手能力,有很強(qiáng)的成就感。TCP作為連接控件應(yīng)用非常廣泛,前景非常好,我會以這次課程設(shè)計為契機(jī),進(jìn)一步對TCP知識進(jìn)行學(xué)習(xí)和發(fā)掘。對我而言,知識上的收獲重要,精神上的豐收更加可喜。讓我知道了學(xué)無止境的道理,這次課程設(shè)計必將成為我人生旅途上一個非常美好的回憶!</p><p><b> 附錄</b></p><p><b> 日志:</
45、b></p><p> 第一天:題目解讀,基本思路。通過對課設(shè)題目的理解,用c#來做界面會好看一些,控件比較好用, tcp連接來做網(wǎng)絡(luò)的連接和數(shù)據(jù)傳輸,這個程序使用的是傳統(tǒng)的C/S模式,所以要寫兩個程序,服務(wù)端不斷掃描端口,客戶端連接并傳輸,爭取可以用一個程序來完成兩個程序的任務(wù)。今天主要寫了獲取本機(jī)ip和掃描指定區(qū)域ip。</p><p> 第二天:寫基本功能。學(xué)習(xí)tcpcli
46、ent的一系列操作后,寫出網(wǎng)絡(luò)連接和數(shù)據(jù)流,主要實(shí)現(xiàn)連接和對單人數(shù)據(jù)傳輸。</p><p> 第三天:測試連接,寫界面,增加其他的功能。測試連接可以正常傳輸信息,主要功能已經(jīng)實(shí)現(xiàn)了,把連接的IP寫到界面上變成可更改的數(shù)據(jù),在界面上添加控件顯示連接信息和聊天信息,搜索IP后對控件數(shù)據(jù)進(jìn)行添加,可以顯示可以搜索到的IP,增加搜索局域網(wǎng)功能。</p><p> 第四天:更正邏輯錯誤,在不同機(jī)
47、器上測試程序,補(bǔ)寫程序注釋。更正了一些釋放連接和數(shù)據(jù)的小錯誤,在宿舍局域網(wǎng)內(nèi)測試程序通過,可以正常實(shí)現(xiàn)所有功能。然后給程序重要部分寫上注釋和自己的理解,程序完成!</p><p><b> 源程序:</b></p><p> using System;</p><p> using System.Collections.Generic;&
48、lt;/p><p> using System.ComponentModel;</p><p> using System.Data;</p><p> using System.Drawing;</p><p> using System.Linq;</p><p> using System.Text;<
49、;/p><p> using System.Windows.Forms;</p><p> using System.Net;</p><p> using System.Net.Sockets;</p><p> using System.Collections;</p><p> using System.T
50、hreading;</p><p> using System.IO;</p><p> using System.Drawing;</p><p> namespace 點(diǎn)對點(diǎn)聊天</p><p><b> {</b></p><p> public partial class For
51、m1 : Form</p><p><b> {</b></p><p> public Form1()</p><p><b> {</b></p><p> InitializeComponent();</p><p><b> }</b>
52、</p><p> private void getlanip_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> string hostname1 = Dns.GetHostName();</p><p> IPHostEntry myen
53、try = Dns.GetHostByName(hostname1);</p><p> IPAddress myaddress = new IPAddress(myentry.AddressList[0].Address);</p><p> string myip = myaddress.ToString();</p><p> int ipdot = m
54、yip.LastIndexOf('.');</p><p> myip = myip.Substring(0,ipdot+1);</p><p> string aa = "0";</p><p> string bb = "255";</p><p> string start
55、ip = myip + aa;</p><p> string endip = myip + bb;</p><p> this.ipstart.Text = startip;</p><p> this.ipend.Text = endip;</p><p><b> }</b></p><
56、p> private void button1_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> string ipcur = this.ipstart.Text;</p><p> int ipdot = ipcur.LastIndexOf('.&
57、#39;);</p><p> string ippre = ipcur.Substring(0,ipdot+1);</p><p> for (int i = 0; i <= 3;i++ )</p><p><b> {</b></p><p> MessageBox.Show("開始搜索&qu
58、ot;);</p><p> string scanip = ippre + i.ToString();</p><p> IPAddress myscanip = IPAddress.Parse(scanip); </p><p> IPHostEntry myscanhost = null;</p><p><b> t
59、ry </b></p><p><b> { </b></p><p> myscanhost = Dns.GetHostByAddress(myscanip); </p><p><b> } </b></p><p><b> catch </b><
60、;/p><p><b> { </b></p><p> continue; </p><p><b> }</b></p><p> if (myscanhost.HostName != null)</p><p><b> {</b></
61、p><p> MessageBox.Show("搜索到一個結(jié)果");</p><p> this.ipbox.Items.Add("可用IP:");</p><p> this.ipbox.Items.Add(scanip);</p><p> this.ipbox.Items.Add("
62、此IP的主機(jī)名:");</p><p> this.ipbox.Items.Add(myscanhost.HostName);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
63、<p> private void Form1_Load(object sender, EventArgs e)</p><p><b> {</b></p><p> string hostname1 = Dns.GetHostName();</p><p> IPHostEntry myentry = Dns.GetH
64、ostByName(hostname1);</p><p> IPAddress myaddress = new IPAddress(myentry.AddressList[0].Address);</p><p> string myip = myaddress.ToString();</p><p> this.localip.Text = myip;&l
65、t;/p><p> this.send.Enabled = false;</p><p> Control.CheckForIllegalCrossThreadCalls = false;</p><p> Thread server = new Thread(new ThreadStart(serverfuntion));</p><p>
66、; server.IsBackground = true;</p><p> server.Start();</p><p><b> }</b></p><p> private void serverfuntion()</p><p><b> {</b></p><
67、;p> DateTime dt = new DateTime();</p><p> dt = DateTime.Now;</p><p> if (this.scanedip.Text != null)</p><p><b> {</b></p><p> TcpListener mylis = ne
68、w TcpListener(IPAddress.Any, 51888);</p><p> mylis.Start();</p><p> while (true)</p><p><b> {</b></p><p> TcpClient mytcp = new TcpClient();</p>
69、<p> mytcp = mylis.AcceptTcpClient();</p><p> // MessageBox.Show("連接建立成功!");</p><p> NetworkStream mystream = mytcp.GetStream();</p><p> StreamReader sr = new Str
70、eamReader(mystream);</p><p> // MessageBox.Show("流建立成功!");</p><p> string received = "";</p><p> received = sr.ReadToEnd();</p><p> // MessageBo
71、x.Show("消息接受成功!");</p><p> if (received != null)</p><p><b> {</b></p><p> this.messagegeted.Items.Add(dt);</p><p> this.messagegeted.Items.Add
72、(received);</p><p><b> }</b></p><p> //MessageBox.Show("文本框修改成功!");</p><p> sr.Close();</p><p> mystream.Close();</p><p> mytcp.
73、Close();</p><p> //MessageBox.Show("流關(guān)閉,連接關(guān)閉!");</p><p><b> }</b></p><p><b> }</b></p><p> private void button2_Click(object sende
74、r, EventArgs e)</p><p><b> {</b></p><p> IPAddress myip = IPAddress.Parse(this.localip.Text.ToString());</p><p> IPAddress toip = IPAddress.Parse(this.scanedip.Text.T
75、oString());</p><p> TcpClient mytcp = new TcpClient();</p><p><b> try </b></p><p><b> { </b></p><p> mytcp.Connect(toip, 51888); </p>
76、<p><b> }</b></p><p> catch (SocketException) </p><p><b> { </b></p><p> MessageBox.Show("該IP不存在!"); </p><p><b> }<
77、;/b></p><p> this.connectinfo.Items.Add("正在連接IP:");</p><p> this.connectinfo.Items.Add(toip);</p><p> if (mytcp.Connected == true)</p><p><b> {&l
78、t;/b></p><p> this.connectinfo.Items.Add("連接成功!");</p><p> this.send.Enabled = true;</p><p> mytcp.Close();</p><p><b> }</b></p><
79、;p><b> else</b></p><p><b> {</b></p><p> this.connectinfo.Items.Add("連接失??!");</p><p> this.send.Enabled = false;</p><p><b&g
80、t; }</b></p><p><b> }</b></p><p> private void send_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> DateTime dt = new Date
81、Time();</p><p> dt = DateTime.Now;</p><p> IPAddress myip = IPAddress.Parse(this.localip.Text.ToString());</p><p> IPAddress toip = IPAddress.Parse(this.scanedip.Text.ToString())
82、;</p><p> TcpClient mytcp = new TcpClient();</p><p> mytcp.Connect(toip,51888);//MessageBox.Show("連接建立!");</p><p> NetworkStream mystream = mytcp.GetStream();//數(shù)據(jù)流建立<
83、;/p><p> string message1 = this.sendmessage.Text;</p><p> string message2 = this.localip.Text;</p><p> string message3 = message1 + " 本條消息來自于:" + message2;</p><
84、;p> string message4 = "你悄悄的對" + this.scanedip.Text + "說:" + message1;</p><p> this.messagegeted.Items.Add(dt);</p><p> this.messagegeted.Items.Add(message4);</p>
85、<p> byte[] sendmessage1 = System.Text.Encoding.UTF8.GetBytes(message3);</p><p> mystream.Write(sendmessage1,0,sendmessage1.Length);</p><p> mystream.Close();//關(guān)閉數(shù)據(jù)流</p><p>
86、; mytcp.Close();//關(guān)閉連接</p><p> this.sendmessage.Clear();//MessageBox.Show("消息發(fā)送成功!");</p><p><b> }</b></p><p><b> }</b></p><p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計報告--“即時通”網(wǎng)絡(luò)通信系統(tǒng)的設(shè)計與開發(fā)
- 點(diǎn)對點(diǎn)即時通信系統(tǒng)的研究與功能實(shí)現(xiàn).pdf
- 安全點(diǎn)對點(diǎn)即時通信的策略研究與實(shí)現(xiàn).pdf
- 即時通信工具畢業(yè)論文
- 課程設(shè)計--基于tcp的計算機(jī)通信工具編程實(shí)現(xiàn)
- 課程設(shè)計--基于tcp的計算機(jī)通信工具編程實(shí)現(xiàn)
- 綜合課程設(shè)計---基于socket的即時通訊系統(tǒng)
- 網(wǎng)絡(luò)即時通信系統(tǒng)的分析與設(shè)計.pdf
- 基于TCP-IP協(xié)議的安全即時通信系統(tǒng)設(shè)計與實(shí)現(xiàn).pdf
- 基于CDMA網(wǎng)絡(luò)的即時通信系統(tǒng)的設(shè)計與實(shí)現(xiàn).pdf
- 通信課程設(shè)計報告---編寫一個tcp報文分析小工具
- 即時通信工具安全性的設(shè)計與實(shí)現(xiàn)【文獻(xiàn)綜述】
- WiMAX網(wǎng)絡(luò)即時通信系統(tǒng)的實(shí)現(xiàn).pdf
- 基于vb的即時通信系統(tǒng)畢業(yè)設(shè)計
- [學(xué)習(xí)]網(wǎng)絡(luò)通訊工具-即時通訊
- 基于智慧協(xié)同網(wǎng)絡(luò)的即時通信平臺設(shè)計與開發(fā).pdf
- 基于bs模式的即時通信軟件設(shè)計
- 校園即時通訊設(shè)計與開發(fā)課程設(shè)計
- 畢業(yè)設(shè)計---基于tcpudp協(xié)議的局域網(wǎng)即時通信工具的設(shè)計與實(shí)現(xiàn)
- 課程設(shè)計----點(diǎn)對點(diǎn)通信計算機(jī)的實(shí)現(xiàn)
評論
0/150
提交評論