91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現局域網點對點

發布時間:2021-07-16 11:02:49 來源:億速云 閱讀:160 作者:chen 欄目:編程語言

這篇文章主要介紹“C#如何實現局域網點對點”,在日常操作中,相信很多人在C#如何實現局域網點對點問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C#如何實現局域網點對點”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

用Visual C#實現局域網點對點通訊程序,就有如下特點,在網絡利用此通訊程序進行通訊的任一計算機,在通訊之前,都需要偵聽端口號,接受其他機器的連接申請,并在連接建立后,就可以接收對方發送來的數據;同時也可以向其他機器提出連接申請,并在對方計算機允許建立連接請求后,發送數據到對方。可見在網絡中利用此軟件進行P2P網絡通訊的任一計算機既是客戶機,同樣也是服務器

一.程序的設計、調試、運行的軟件環境:
1.微軟公司視窗2000服務器版
2.Visual Studio .Net正式版,.Net FrameWork SDK版本號3705

二.關鍵步驟及其解決方法:

關鍵步驟就是實現信息在網絡中的發送和接收。數據接收使用的是Socket,數據發送使用的是NetworkStream。

1.利用Socket來接收信息:

為了更清楚的說明問題,程序在處理數據發送和接收時采用了不通的端口號,發送數據程序在缺省狀態設定的端口號為"8889"。下面代碼是偵聽端口號"8889",接受網絡中對此端口號的連接請求,并在建立連接后,通過Socket接收遠程計算機發送來的數據:

try  {  TcpListener tlListen1 = new TcpListener ( 8889 ) ;  //偵聽端口號  tlListen1.Start ( ) ;  Socket skSocket = tlListen1.AcceptSocket ( );  //接受遠程計算機的連接請求,并獲得用以接收數據的Socket實例  EndPoint tempRemoteEP = skSocket.RemoteEndPoint;  //獲得遠程計算機對應的網絡遠程終結點  while (true)  {  Byte [] byStream = new Byte[80];  //定義從遠程計算機接收到數據存放的數據緩沖區  int i = skSocket.ReceiveFrom(byStream,ref tempRemoteEP);  //接收數據,并存放到定義的緩沖區中  string sMessage = System.Text.Encoding.UTF8.GetString(byStream);  //以指定的編碼,從緩沖區中解析出內容  MessageBox.Show ( sMessage );  //顯示傳送來的數據  }  }  catch ( System.Security.SecurityException )  {  MessageBox.Show ( "防火墻安全錯誤!","錯誤",  MessageBoxButtons.OK , MessageBoxIcon.Exclamation);  }

2.利用NetworkStream來傳送信息:

在使用StreamWriter處理NetworkStream傳送數據時,數據傳送的編碼類型是"UTF8",下列代碼是對IP地址為"10.138.198.213"的計算機的"8888"端口號提出連接申請,并在連接申請建立后,以UTF8編碼發送字符串"您好,見到您很高興"到對方,由于下列代碼中的注釋比較詳細,這里就不具體介紹了,下列代碼也是使用 NetworkStream傳送數據的典型代碼:

try  {  TcpClient tcpc = new TcpClient ("10.138.198.213",8888);  //對IP地址為"10.138.198.213"的計算機的8888端口提出連接申請  NetworkStream tcpStream = tcpc.GetStream ( );  //如果連接申請建立,則獲得用以傳送數據的數據流  }  catch ( Exception )  {  MessageBox.Show ( "目標計算機拒絕連接請求!" ) ;  break ;  }  try  {  string sMsg = "您好,見到您很高興" ;  StreamWriter reqStreamW = new StreamWriter (tcpStream);  //以特定的編碼往向數據流中寫入數據 ,默認為UTF8編碼  reqStreamW.Write (sMsg);  //將字符串寫入數據流中  reqStreamW.Flush ( );  //清理當前編寫器的所有緩沖區,并使所有緩沖數據寫入基礎流  }  catch(Exception)  {  MessageBox.Show ("無法發送信息到目標計算機!") ;  }

當然在具體用Visual C#實現局域網點對點通訊程序時,還必須掌握很多其他方面的知識,如資源的回收。在用Visual C#編寫網絡應用程序的時候,很多朋友遇到這樣的情況。當程序退出后,通過Windows的" 資源管理器"看到的是進程數目并沒有減少。這是因為程序中使用的線程可能并沒有有效退出。雖然Thread類中提供了"Abort"方法用以中止進程,但并不能夠保證成功退出。因為進程中使用的某些資源并沒有回收。在某些情況下垃圾回收器也不能保證完全的回收資源,還是需要我們自己手動回收資源的。在本文介紹的程序中也涉及到資源手動回收的問題。實現方法可參閱下面具體實現步驟中的第十二步。

到此,關于“C#如何實現局域網點對點”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江达县| 红桥区| 崇仁县| 嘉祥县| 杭州市| 葫芦岛市| 本溪| 上犹县| 泗水县| 繁峙县| 青阳县| 池州市| 无极县| 贡觉县| 方正县| 榆社县| 绥宁县| 海伦市| 攀枝花市| 全椒县| 西吉县| 胶南市| 新龙县| 固安县| 博白县| 石嘴山市| 五河县| 新营市| 扶余县| 思茅市| 彰化县| 长治县| 瓦房店市| 福泉市| 邯郸市| 中西区| 永川市| 鲁山县| 万年县| 囊谦县| 六安市|