成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#實現局域網點對點淺析

開發 后端
這里介紹當然在具體用Visual C#實現局域網點對點通訊程序時,還必須掌握很多其他方面的知識,如資源的回收。

在向大家詳細介紹C#實現局域網點對點通訊程序之前,首先讓大家了解下程序的設計、調試、運行的軟件環境,然后全面介紹C#實現局域網點對點通訊程序。

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

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

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

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

1.利用Socket來接收信息:

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

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

2.利用NetworkStream來傳送信息:

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

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

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

【編輯推薦】

  1. C#創建表單簡單介紹
  2. C#修改DataReader默認行為
  3. C#設置CooperativeLevel概述
  4. C#表單增加控件簡單描述
  5. C# EmployeePlug類概述
責任編輯:佚名 來源: 博客園
相關推薦

2010-01-22 15:59:19

2009-02-04 09:11:00

VistaXP局域網互連

2009-11-20 11:13:31

2010-03-16 16:57:07

局域網交換機

2009-08-15 16:06:00

局域網VLAN

2009-09-17 13:44:19

2010-09-17 09:04:10

2011-07-28 14:10:46

路由器局或網

2009-08-15 17:01:46

2009-09-03 14:49:49

C#實現網絡點對點

2009-09-01 18:29:24

C#實現多個接口

2020-04-21 14:53:35

LinuxPython數據

2010-01-12 16:55:40

交換機怎樣設置

2009-09-02 15:34:37

C#實現插件構架

2009-08-31 16:48:02

C#實現IDispos

2010-08-30 11:02:04

2009-08-13 18:15:06

C#繼承構造函數

2009-09-02 17:24:44

C#關機代碼

2009-09-07 09:36:29

C# DisposeDispose方法

2009-08-28 16:03:15

C#程序實現鼠標移動
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品中文字幕av | 性xxxxx | 一区二区三区小视频 | 亚洲在线免费 | 91精品国产综合久久久久久丝袜 | 国产精品视频网址 | 四色成人av永久网址 | 国产精品美女久久久 | 亚洲精品乱码久久久久v最新版 | 影音先锋男 | 日韩中文字幕在线观看 | 日本欧美在线 | 99久久99热这里只有精品 | 91精品国产综合久久福利软件 | 欧美成人精品激情在线观看 | 久久久久91| 黄色男女网站 | 成人在线免费视频 | 国产精品成人在线播放 | 国产一级视频 | 中文字幕免费中文 | 91在线视频在线观看 | 欧美精品二区 | 青娱乐av| 成人在线精品视频 | 久久国产精品免费视频 | 欧美激情黄色 | 欧美一区视频 | 91成人免费观看 | 色男人的天堂 | 国产精品一区二区在线 | 久久久www成人免费无遮挡大片 | 国产精品二区三区 | 国产精品久久久久久久7电影 | 91久久精品国产免费一区 | 日日骑| 亚洲美女在线一区 | 精品视频在线观看 | 午夜爱爱毛片xxxx视频免费看 | 国产精品99久久久精品免费观看 | 亚洲精品一区在线 |