日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#實現(xiàn)局域網(wǎng)點對點淺析

在向大家詳細介紹C#實現(xiàn)局域網(wǎng)點對點通訊程序之前,首先讓大家了解下程序的設計、調(diào)試、運行的軟件環(huán)境,然后全面介紹C#實現(xiàn)局域網(wǎng)點對點通訊程序。

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站設計、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的蕉城網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

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

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

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

關鍵步驟就是實現(xiàn)信息在網(wǎng)絡中的發(fā)送和接收。數(shù)據(jù)接收使用的是Socket,數(shù)據(jù)發(fā)送使用的是NetworkStream。

1.利用Socket來接收信息:

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

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

2.利用NetworkStream來傳送信息:

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

 
 
 
  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. //如果連接申請建立,則獲得用以傳送數(shù)據(jù)的數(shù)據(jù)流
  7. }
  8. catch ( Exception )
  9. {
  10. MessageBox.Show ( "目標計算機拒絕連接請求!" ) ;
  11. break ;
  12. }
  13. try
  14. {
  15. string sMsg = "您好,見到您很高興" ;
  16. StreamWriter reqStreamW = new StreamWriter (tcpStream);
  17. //以特定的編碼往向數(shù)據(jù)流中寫入數(shù)據(jù) ,默認為UTF8編碼
  18. reqStreamW.Write (sMsg);
  19. //將字符串寫入數(shù)據(jù)流中
  20. reqStreamW.Flush ( );
  21. //清理當前編寫器的所有緩沖區(qū),并使所有緩沖數(shù)據(jù)寫入基礎流
  22. }
  23. catch(Exception)
  24. {
  25. MessageBox.Show ("無法發(fā)送信息到目標計算機!") ;
  26. }

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


當前題目:C#實現(xiàn)局域網(wǎng)點對點淺析
網(wǎng)站地址:http://m.5511xx.com/article/cdoecjh.html