本篇文章為大家展示了如何進行C#網(wǎng)絡(luò)編程服務(wù)器端程序的實現(xiàn)源碼淺析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司主營徐聞網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),徐聞h5小程序定制開發(fā)搭建,徐聞網(wǎng)站營銷推廣歡迎徐聞等地區(qū)企業(yè)咨詢
C#網(wǎng)絡(luò)編程服務(wù)器端程序?qū)崿F(xiàn)源碼是怎么樣的呢?讓我們來看看其中重要的一部分:
由于在此次程序中我們采用的結(jié)構(gòu)是異步阻塞方式,所以在實際的程序中,為了不影響服務(wù)器端程序的運行速度,我們在程序中設(shè)計了一個線程,使得對網(wǎng)絡(luò)請求偵聽,接受和發(fā)送數(shù)據(jù)都在線程中處理,請在下面的代碼中注意這一點,下面是C#網(wǎng)絡(luò)編程服務(wù)器端程序的完整代碼:
//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#網(wǎng)絡(luò)編程服務(wù)器端程序 //導(dǎo)入程序中使用到的名字空間 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#網(wǎng)絡(luò)編程服務(wù)器端程序 //清除程序中使用的各種資源 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#網(wǎng)絡(luò)編程服務(wù)器端程序 //同樣的方式設(shè)置其他控件,這里略去 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#的網(wǎng)絡(luò)編程服務(wù)器端!" ; this.Closed += new System.EventHandler ( this.Form1_Closed ) ; this.ResumeLayout ( false ) ; } private void Listen ( ) { //C#網(wǎng)絡(luò)編程服務(wù)器端程序 //創(chuàng)建一個tcpListener對象,此對象主要是對給定端口進行偵聽 tcpListener = new TcpListener ( 1234 ) ; //開始偵聽 tcpListener.Start ( ) ; //返回可以用以處理連接的Socket實例 socketForClient = tcpListener.AcceptSocket ( ) ; try { //如果返回值是"true",則產(chǎn)生的套節(jié)字已經(jīng)接受來自遠方的連接請求 if ( socketForClient.Connected ) { ListBox1.Items.Add ( "已經(jīng)和客戶端成功連接!" ) ; while ( true ) { //創(chuàng)建networkStream對象通過網(wǎng)絡(luò)套節(jié)字來接受和發(fā)送數(shù)據(jù) networkStream = new NetworkStream ( socketForClient ) ; //從當(dāng)前數(shù)據(jù)流中讀取一行字符,返回值是字符串 streamReader = new StreamReader ( networkStream ) ; string msg = streamReader.ReadLine ( ) ; ListBox1.Items.Add ( "收到客戶端信息:" + msg ) ; streamWriter = new StreamWriter ( networkStream ) ; if ( textBox1.Text != "" ) { ListBox1.Items.Add ( "往客戶端反饋信息:" + textBox1.Text ) ; //往當(dāng)前的數(shù)據(jù)流中寫入一行字符串 streamWriter.WriteLine ( textBox1.Text ) ; //刷新當(dāng)前數(shù)據(jù)流中的數(shù)據(jù) //C#網(wǎng)絡(luò)編程服務(wù)器端程序 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 ( "服務(wù)已經(jīng)啟動!" ) ; _thread1 = new Thread ( new ThreadStart ( Listen ) ) ; _thread1.Start ( ) ; } private void button2_Click ( object sender , System.EventArgs e ) { //C#網(wǎng)絡(luò)編程服務(wù)器端程序 //關(guān)閉線程和流 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#網(wǎng)絡(luò)編程服務(wù)器端程序 //關(guān)閉線程和流 networkStream.Close ( ) ; streamReader.Close ( ) ; streamWriter.Close ( ) ; _thread1.Abort ( ) ; tcpListener.Stop ( ) ; socketForClient.Shutdown ( SocketShutdown.Both ) ; socketForClient.Close ( ) ; } }
C#網(wǎng)絡(luò)編程服務(wù)器端程序的實現(xiàn)源碼就向你介紹到這里,希望對你了解和學(xué)習(xí)C#網(wǎng)絡(luò)編程服務(wù)器端程序有所幫助。
上述內(nèi)容就是如何進行C#網(wǎng)絡(luò)編程服務(wù)器端程序的實現(xiàn)源碼淺析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。