文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-17 23:04

关注

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯