iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >如何进行C#网络编程服务器端程序的实现源码浅析
  • 777
分享到

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

2023-06-17 23:06:25 777人浏览 独家记忆
摘要

本篇文章为大家展示了如何进行C#网络编程服务器端程序的实现源码浅析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#网络编程服务器端程序实现源码是怎么样的呢?让我们来看看其中重要的一部分:由于在此次

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

--结束END--

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

本文链接: https://www.lsjlt.com/news/294339.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作