基於TCP協議的發送和接收端[轉] :十一的部落:Xuite日誌
  • yan.kee
  • 文章分類
  • 最愛連結
  • 我的發燒文
  • 累積 | 今日
    loading......
  • 參觀人氣統計
  • 誰拜訪過我
  • BLOG玩意兒
  • 搜尋文章
  • 關鍵字
  • 最新文章
  • 最新回應
  • Re:只能在執行 Render() 的過程中調用 RegisterForEventValidation,by(11)於2008-07-03
    Re:[轉]自動清除7天以上的檔案 ,by(haoming)於2008-06-13
    Re:[kuso]尿布舞,by(11)於2008-05-18
    Re:[kuso]尿布舞,by(seth)於2008-05-18
    Re:C#中產生GUID,by(yankee)於2008-02-17
    Re:C#中產生GUID,by(jimmy)於2008-02-16
    Re:開發excel 問題討論串,by(11)於2008-02-02
    Re:Connection Strings 討論串,by(11)於2008-01-27
    Re:SQL 分頁,by(11)於2008-01-25
    Re:開發excel 問題討論串,by(11)於2008-01-16
  • 活動
  • 到台灣玩不帶走一張發票
    ===訪客來自===
    Locations of visitors to this page
  • 日誌使用資源






  • 如何使用RSS
    Powered by Xuite
  • 最新引用
  • 沒有新引用
  • 最愛日誌
  • 2008-04-09 09:23 基於TCP協議的發送和接收端[轉]
  • ?
  • .net文章
  • 好文轉寄
  • 平均分數:0 顆星    投票人數:0
    我要評分:
    標籤 : 


       在上篇裡介紹了Socket的基本編程,這次來看看.net封裝的基於TCP協議的發送和接收端

    TCP協議的接收端

     

    using System.Net.Sockets ; //使用到TcpListen

     

    using System.Threading ; //使用到線程 

     

    using System.IO ; //使用到StreamReader

     

     

             int port = 8000; //定義偵聽端口號

     

             private Thread thThreadRead; //創建線程,用以偵聽端口號,接收信息

     

             private TcpListener tlTcpListen; //偵聽端口號

     

             private bool blistener = true; //設定標示位,判斷偵聽狀態

     

             private NetworkStream nsStream; //創建接收的基本數據流 

     

             private StreamReader srRead;

     

             private System.Windows.Forms.StatusBar statusBar1;

     

             private System.Windows.Forms.Button button1;

     

             private System.Windows.Forms.ListBox listBox1; //從網絡基礎數據流中讀取數據

     

             private TcpClient tcClient ;

     

     

             private void Listen ( )

     

             {

     

                  try

     

                  {

     

                       tlTcpListen = new TcpListener ( port ) ; //8000端口號來初始化TcpListener實例

     

                       tlTcpListen.Start ( ) ; //開始監聽

     

                       statusBar1.Text = "正在監聽..." ;

     

                       tcClient = tlTcpListen.AcceptTcpClient ( ) ; //通過TCP連接請求

     

                       nsStream = tcClient.GetStream ( ) ; //獲取用以發送、接收數據的網絡基礎數據流

     

                       srRead=new StreamReader(nsStream);//以得到的網絡基礎數據流來初始化StreamReader實例

     

                       statusBar1.Text = "已經連接!";

     

     

                       while( blistener ) //循環偵聽

     

                       {

     

                           string sMessage = srRead.ReadLine();//從網絡基礎數據流中讀取一行數據

     

                           if ( sMessage == "STOP" ) //判斷是否為斷開TCP連接控制碼

     

                           {

     

                                tlTcpListen.Stop(); //關閉偵聽

     

                                nsStream.Close(); //釋放資源

     

                                srRead.Close();

     

                                statusBar1.Text = "連接已經關閉!" ;

     

                                thThreadRead.Abort(); //中止線程

     

                                return;

     

                           }

     

     

                           string sTime = DateTime.Now.ToShortTimeString ( ) ; //獲取接收數據時的時間

     

                           listBox1.Items.Add ( sTime + " " + sMessage ) ;

     

                       }

     

                  }

     

                  catch ( System.Security.SecurityException )

     

                  {

     

                       MessageBox.Show ( "偵聽失敗!" , "錯誤" ) ;

     

                  }

     

             }

     

             //開始監聽

     

             private void button1_Click(object sender, System.EventArgs e)

     

             {

     

                  thThreadRead = new Thread ( new ThreadStart ( Listen ) );

     

                  thThreadRead.Start();//啟動線程          

     

                  button1.Enabled=false;

     

             }

     

             // 清理所有正在使用的資源。

     

             protected override void Dispose( bool disposing )

     

             {

     

                  try

     

                  {

     

                       tlTcpListen.Stop(); //關閉偵聽

     

                       nsStream.Close();

     

                       srRead.Close();//釋放資源

     

                       thThreadRead.Abort();//中止線程

     

                  }

     

                  catch{}

     

     

                  if( disposing )

     

                  {

     

                       if (components != null)

     

                       {

     

                           components.Dispose();

     

                       }

     

                  }

     

                  base.Dispose( disposing );

     

             }

     

     

     

    TCP協議的發送端

     

     

    using System.Net.Sockets; //使用到TcpListen

     

    using System.Threading; //使用到線程

     

    using System.IO; //使用到StreamWriter

     

    using System.Net; //使用IPAddress