C#网络编程服务器端程序实现源码浅析
2010-07-24 13:33
615 查看
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#网络编程服务器端程序实现源码浅析
- Android网络编程之一个Android下菜单系统模块的实现(服务器端—开桌功能))
- C#中使用异步Socket编程实现TCP网络服务的CS的通讯构架(一)----基础类库部分
- C#实现局域网UDP广播------C#网络编程杂记[1]
- 客户端根据服务器端的指令弹出提示窗口(c#网络通信源码)
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- Android网络编程之一个Android下菜单系统模块的实现(服务器端—结算功能(中部))
- 网络编程——多线程技术实现网络聊天程序
- 如何用C#下的Raw Socket编程实现网络封包监视
- 一个简单的AJAX实现,基于C#的ASP.Net,包括服务器端的程序代码
- linux网络编程:用C语言实现的聊天程序(异步通信)
- .NET(C#)基于Socket编程实现平行主机之间网络通讯有图片传输的Demo演示
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序服务器端运行详细配置参考
- DirectX编程:C#中利用Socket实现网络语音通信
- 【源码】c#编写的安卓客户端与Windows服务器程序进行网络通信
- C#下的Raw Socket编程实现网络封包监视
- Android网络编程之——Android登录系统模块的实现(客户端+服务器端Servlet+MySQL)
- 【C#网络编程系列】专题七:UDP编程补充——UDP广播程序的实现
- C#实现联通短信Sgip协议程序源码
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序服务器端运行详细配置参考