温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行C#网络编程服务器端程序的实现源码浅析

发布时间:2021-11-23 23:17:46 来源:亿速云 阅读:166 作者:柒染 栏目:编程语言

本篇文章为大家展示了如何进行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#网络编程服务器端程序的实现源码浅析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI