C#網絡編程服務器端程序設計淺析
C#網絡編程服務器端程序設計淺析
在下面接受的程序中,我們采用的是異步阻塞的方式。
C#網絡編程服務器端程序設計(1).首先要要在給定的端口上面創(chuàng)建一個"tcpListener"對象偵聽網絡上面的請求。當接收到連結請求后通過調用"tcpListener"對象的"AcceptSocket"方法產生一個用于處理接入連接請求的Socket的實例。下面是具體實現(xiàn)代碼:
- //創(chuàng)建一個tcpListener對象,此對象主要是對給定端口進行偵聽
 - tcpListener = new TcpListener ( 1234 ) ;
 - //開始偵聽
 - tcpListener.Start ( ) ;
 - //返回可以用以處理連接的Socket實例
 - socketForClient = tcpListener.AcceptSocket ( ) ;
 
C#網絡編程服務器端程序設計(2).接受和發(fā)送客戶端數據:
此時Socket實例已經產生,如果網絡上有請求,在請求通過以后,Socket實例構造一個"NetworkStream"對象,"NetworkStream"對象為網絡訪問提供了基礎數據流。我們通過名稱空間"System.IO"中封裝的二個類"StreamReader"和"StreamWriter"來實現(xiàn)對"NetworkStream"對象的訪問。其中"StreamReader"類中的ReadLine ( )方法就是從"NetworkStream"對象中讀取一行字符;"StreamWriter"類中的WriteLine ( )方法就是對"NetworkStream"對象中寫入一行字符串。從而實現(xiàn)在網絡上面?zhèn)鬏斪址旅媸蔷唧w的實現(xiàn)代碼:
- try
 - {
 - //如果返回值是"true",則產生的套節(jié)字已經接受來自遠方的連接請求
 - if ( socketForClient.Connected )
 - {
 - ListBox1.Items.Add ( "已經和客戶端成功連接!" ) ;
 - while ( true )
 - {
 - //創(chuàng)建networkStream對象通過網絡套節(jié)字來接受和發(fā)送數據
 - networkStream = new NetworkStream ( socketForClient ) ;
 - //從當前數據流中讀取一行字符,返回值是字符串
 - streamReader = new StreamReader ( networkStream ) ;
 - string msg = streamReader.ReadLine ( ) ;
 - ListBox1.Items.Add ( "收到客戶端信息:" + msg ) ;
 - streamWriter = new StreamWriter ( networkStream ) ;
 - if ( textBox1.Text != "" )
 - {
 - ListBox1.Items.Add ( "往客戶端反饋信息:" + textBox1.Text ) ;
 - //往當前的數據流中寫入一行字符串
 - streamWriter.WriteLine ( textBox1.Text ) ;
 - //刷新當前數據流中的數據
 - streamWriter.Flush ( ) ;
 - }
 - }
 - }
 - }
 - catch ( Exception ey )
 - {
 - MessageBox.Show ( ey.ToString ( ) ) ;
 - }
 
C#網絡編程服務器端程序設計(3).***別忘了要關閉所以流,停止偵聽網絡,關閉套節(jié)字,具體如下:
- //關閉線程和流
 - networkStream.Close ( ) ;
 - streamReader.Close ( ) ;
 - streamWriter.Close ( ) ;
 - _thread1.Abort ( ) ;
 - tcpListener.Stop ( ) ;
 - socketForClient.Shutdown ( SocketShutdown.Both ) ;
 - socketForClient.Close ( ) ;
 
C#網絡編程服務器端程序設計的基本內容就向你介紹到這里,希望對你了解和學習C#網絡編程服務器端程序設計有所幫助。
【編輯推薦】















 
 
 

 
 
 
 