您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何進行C#網絡編程服務器端程序的實現源碼淺析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
C#網絡編程服務器端程序實現源碼是怎么樣的呢?讓我們來看看其中重要的一部分:
由于在此次程序中我們采用的結構是異步阻塞方式,所以在實際的程序中,為了不影響服務器端程序的運行速度,我們在程序中設計了一個線程,使得對網絡請求偵聽,接受和發送數據都在線程中處理,請在下面的代碼中注意這一點,下面是C#網絡編程服務器端程序的完整代碼:
//server.cs using System ; using System.Drawing ; using System.Collections ; using System.ComponentModel ; using System.Windows.Forms ; using System.Data ; using System.Net.Sockets ; using System.IO ; using System.Threading ; using System.Net ; //C#網絡編程服務器端程序 //導入程序中使用到的名字空間 public class Form1 : Form { private ListBox ListBox1 ; private Button button2 ; private Label label1 ; private TextBox textBox1 ; private Button button1 ; private Socket socketForClient ; private NetworkStream networkStream ; private TcpListener tcpListener ; private StreamWriter streamWriter ; private StreamReader streamReader ; private Thread _thread1 ; private System.ComponentModel.Container components = null ; public Form1 ( ) { InitializeComponent ( ) ; } //C#網絡編程服務器端程序 //清除程序中使用的各種資源 protected override void Dispose ( bool disposing ) { if ( disposing ) { if ( components != null ) { components.Dispose ( ) ; } } base.Dispose ( disposing ) ; } private void InitializeComponent ( ) { label1 = new Label ( ) ; button2 = new Button ( ) ; button1 = new Button ( ) ; ListBox1 = new ListBox ( ) ; textBox1 = new TextBox ( ) ; SuspendLayout ( ) ; label1.Location = new Point ( 8 , 168 ) ; label1.Name = "label1" ; label1.Size = new Size ( 120 , 23 ) ; label1.TabIndex = 3 ; label1.Text = "往客戶端反饋信息:" ; //C#網絡編程服務器端程序 //同樣的方式設置其他控件,這里略去 this.Controls.Add ( button1 ) ; this.Controls.Add ( textBox1 ) ; this.Controls.Add ( label1 ) ; this.Controls.Add ( button2 ) ; this.Controls.Add ( ListBox1 ) ; this.MaximizeBox = false ; this.MinimizeBox = false ; this.Name = "Form1" ; this.Text = "C#的網絡編程服務器端!" ; this.Closed += new System.EventHandler ( this.Form1_Closed ) ; this.ResumeLayout ( false ) ; } private void Listen ( ) { //C#網絡編程服務器端程序 //創建一個tcpListener對象,此對象主要是對給定端口進行偵聽 tcpListener = new TcpListener ( 1234 ) ; //開始偵聽 tcpListener.Start ( ) ; //返回可以用以處理連接的Socket實例 socketForClient = tcpListener.AcceptSocket ( ) ; try { //如果返回值是"true",則產生的套節字已經接受來自遠方的連接請求 if ( socketForClient.Connected ) { ListBox1.Items.Add ( "已經和客戶端成功連接!" ) ; while ( true ) { //創建networkStream對象通過網絡套節字來接受和發送數據 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 ) ; //刷新當前數據流中的數據 //C#網絡編程服務器端程序 streamWriter.Flush ( ) ; } } } } catch ( Exception ey ) { MessageBox.Show ( ey.ToString ( ) ) ; } } static void Main ( ) { Application.Run ( new Form1 ( ) ) ; } private void button1_Click ( object sender , System.EventArgs e ) { ListBox1.Items .Add ( "服務已經啟動!" ) ; _thread1 = new Thread ( new ThreadStart ( Listen ) ) ; _thread1.Start ( ) ; } private void button2_Click ( object sender , System.EventArgs e ) { //C#網絡編程服務器端程序 //關閉線程和流 networkStream.Close ( ) ; streamReader.Close ( ) ; streamWriter.Close ( ) ; _thread1.Abort ( ) ; tcpListener.Stop ( ) ; socketForClient.Shutdown ( SocketShutdown.Both ) ; socketForClient.Close ( ) ; } private void Form1_Closed ( object sender , System.EventArgs e ) { //C#網絡編程服務器端程序 //關閉線程和流 networkStream.Close ( ) ; streamReader.Close ( ) ; streamWriter.Close ( ) ; _thread1.Abort ( ) ; tcpListener.Stop ( ) ; socketForClient.Shutdown ( SocketShutdown.Both ) ; socketForClient.Close ( ) ; } }
C#網絡編程服務器端程序的實現源碼就向你介紹到這里,希望對你了解和學習C#網絡編程服務器端程序有所幫助。
上述內容就是如何進行C#網絡編程服務器端程序的實現源碼淺析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。