好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

c# winform socket网络编程,点对点传输文件,socket文件传输,监听端口

c# winform socket网络编程,点对点传输文件,socket文件传输,监听端口

关键字: socket 网络编程 点对点 传输文件 文件传输 监听端口

服务器用来接收文件,不停的监听端口,有发送文件就马上开始接收文件 
服务端代码: 

C#代码 

using  System;    using  System.Collections.Generic;    using  System.ComponentModel;    using  System.Data;    using  System.Drawing;    using  System.Text;    using  System.Windows.Forms;          using  System.Net;    using  System.Threading;    using  System.Net.Sockets;       using  System.IO;       namespace  TestSocketServerHSTF    {         public  partial  class  Form1 : Form        {             public  Form1()            {                InitializeComponent();                       //不显示出dataGridView1的最后一行空白                 dataGridView1.AllowUserToAddRows =  false ;            }                #region 定义变量                #endregion                  #region 进入窗体即启动服务                 private   void  Form1_Load( object  sender, EventArgs e)            {                 //开启接收线程                 Thread TempThread =  new  Thread( new  ThreadStart( this .StartReceive));                TempThread.Start();            }                          #endregion                  #region 功能函数                 private   void  StartReceive()            {                 //创建一个网络端点                 IPEndPoint ipep =  new  IPEndPoint(IPAddress.Any,  int .Parse( "2005" ));                    //MessageBox.Show(IPAddress.Any);                     //创建一个套接字                 Socket server =  new  Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                    //绑定套接字到端口                 server.Bind(ipep);                    //开始侦听(并堵塞该线程)                 server.Listen(10);                    //确认连接                 Socket client = server.Accept();                    //获得客户端节点对象                 IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;                                       //获得[文件名]                  string  SendFileName = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client));                 //MessageBox.Show("文件名" + SendFileName);                     //获得[包的大小]                  string  bagSize = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client));                 //MessageBox.Show("包大小" + bagSize);                     //获得[包的总数量]                  int  bagCount =  int .Parse(System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client)));                 //MessageBox.Show("包的总数量" + bagCount);                     //获得[最后一个包的大小]                  string  bagLast = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client));                 //MessageBox.Show("最后一个包的大小" + bagLast);                     //创建一个新文件                 FileStream MyFileStream =  new  FileStream(SendFileName, FileMode.Create, FileAccess.Write);                    //已发送包的个数                  int  SendedCount = 0;                    while  ( true )                {                     byte [] data = TransferFiles.ReceiveVarData(client);                     if  (data.Length == 0)                    {                         break ;                    }                     else                    {                        SendedCount++;                         //将接收到的数据包写入到文件流对象                         MyFileStream.Write(data, 0, data.Length);                         //显示已发送包的个数                          //MessageBox.Show("已发送包个数"+SendedCount.ToString());                     }                }                    //关闭文件流                 MyFileStream.Close();                 //关闭套接字                 client.Close();                    //填加到dgv里                  //文件大小,IP,已发送包的个数,文件名,包的总量,最后一个包的大小                  this .dataGridView1.Rows.Add(bagSize, clientep.Address, SendedCount, SendFileName, bagCount, bagLast);                    //MessageBox.Show("文件接收完毕!");                }                #endregion                  #region   拦截Windows消息,关闭窗体时执行              protected   override   void  WndProc( ref    Message m)            {                 const   int  WM_SYSCOMMAND = 0x0112;                 const   int  SC_CLOSE = 0xF060;                 if  (m.Msg == WM_SYSCOMMAND && ( int )m.WParam == SC_CLOSE)                { //捕捉关闭窗体消息                         //   User   clicked   close   button                         //this.WindowState = FormWindowState.Minimized;//把右上角红叉关闭按钮变最小化                       ServiceStop();                }                 base .WndProc( ref    m);            }            #endregion                #region 停止服务                 //停止服务              private   void  ServiceStop()            {                 try                {                   }                 catch  { }                    try                {                   }                 catch  { }            }              #endregion            }    }  

[c#]   view plain copy

using  System;   using  System.Collections.Generic;   using  System.ComponentModel;   using  System.Data;   using  System.Drawing;   using  System.Text;   using  System.Windows.Forms;         using  System.Net;   using  System.Threading;   using  System.Net.Sockets;      using  System.IO;      namespace  TestSocketServerHSTF   {        public  partial  class  Form1 : Form       {            public  Form1()           {               InitializeComponent();                      //不显示出dataGridView1的最后一行空白                dataGridView1.AllowUserToAddRows =  false ;           }               #region 定义变量                #endregion                  #region 进入窗体即启动服务                private   void  Form1_Load( object  sender, EventArgs e)           {                //开启接收线程                Thread TempThread =  new  Thread( new  ThreadStart( this .StartReceive));               TempThread.Start();           }                        #endregion                  #region 功能函数                private   void  StartReceive()           {                //创建一个网络端点                IPEndPoint ipep =  new  IPEndPoint(IPAddress.Any,  int .Parse( "2005" ));                   //MessageBox.Show(IPAddress.Any);                    //创建一个套接字                Socket server =  new  Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                   //绑定套接字到端口                server.Bind(ipep);                   //开始侦听(并堵塞该线程)                server.Listen(10);                   //确认连接                Socket client = server.Accept();                   //获得客户端节点对象                IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;                                     //获得[文件名]                 string  SendFileName = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client));                //MessageBox.Show("文件名" + SendFileName);                    //获得[包的大小]                 string  bagSize = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client));                //MessageBox.Show("包大小" + bagSize);                    //获得[包的总数量]                 int  bagCount =  int .Parse(System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client)));                //MessageBox.Show("包的总数量" + bagCount);                    //获得[最后一个包的大小]                 string  bagLast = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client));                //MessageBox.Show("最后一个包的大小" + bagLast);                    //创建一个新文件                FileStream MyFileStream =  new  FileStream(SendFileName, FileMode.Create, FileAccess.Write);                   //已发送包的个数                 int  SendedCount = 0;                   while  ( true )               {                    byte [] data = TransferFiles.ReceiveVarData(client);                    if  (data.Length == 0)                   {                        break ;                   }                    else                    {                       SendedCount++;                        //将接收到的数据包写入到文件流对象                        MyFileStream.Write(data, 0, data.Length);                        //显示已发送包的个数                         //MessageBox.Show("已发送包个数"+SendedCount.ToString());                    }               }                   //关闭文件流                MyFileStream.Close();                //关闭套接字                client.Close();                   //填加到dgv里                 //文件大小,IP,已发送包的个数,文件名,包的总量,最后一个包的大小                 this .dataGridView1.Rows.Add(bagSize, clientep.Address, SendedCount, SendFileName, bagCount, bagLast);                   //MessageBox.Show("文件接收完毕!");               }               #endregion                  #region   拦截Windows消息,关闭窗体时执行             protected   override   void  WndProc( ref    Message m)           {                const   int  WM_SYSCOMMAND = 0x0112;                const   int  SC_CLOSE = 0xF060;                if  (m.Msg == WM_SYSCOMMAND && ( int )m.WParam == SC_CLOSE)               { //捕捉关闭窗体消息                        //   User   clicked   close   button                        //this.WindowState = FormWindowState.Minimized;//把右上角红叉关闭按钮变最小化                       ServiceStop();               }                base .WndProc( ref    m);           }           #endregion                #region 停止服务                //停止服务             private   void  ServiceStop()           {                try                {                  }                catch  { }                   try                {                  }                catch  { }           }             #endregion           }   }  



客户端用来发送文件,选择文件后点发送按钮发送文件 
客户端代码: 

C#代码 

////////////////////////////////////////////////////////////////////////////////     //title: 点对点文件传输程序                                           //     ////////////////////////////////////////////////////////////////////////////////        //////////////////////////Begin-发送端//////////////////////////////////     using  System;    using  System.Drawing;    using  System.Collections;    using  System.ComponentModel;    using  System.Windows.Forms;    using  System.Data;    using  System.IO;    using  System.Net;    using  System.Net.Sockets;    using  System.Threading;       namespace  发送端    {         /// <summary>          /// Form1 的摘要说明。          /// </summary>          public   class  Form1 : System.Windows.Forms.Form        {             private  System.Windows.Forms.GroupBox groupBox1;             private  System.Windows.Forms.OpenFileDialog openFileDialog1;             private  System.Windows.Forms.TextBox textBox1;             private  System.Windows.Forms.Button button1;             private  System.Windows.Forms.Label label1;             private  System.Windows.Forms.TextBox textBox2;             private  System.Windows.Forms.Label label2;             private  System.Windows.Forms.TextBox textBox3;             private  System.Windows.Forms.GroupBox groupBox2;             private  System.Windows.Forms.Label label3;             private  System.Windows.Forms.TextBox textBox4;             private  System.Windows.Forms.Label label4;             private  System.Windows.Forms.TextBox textBox5;             private  System.Windows.Forms.GroupBox groupBox3;             private  System.Windows.Forms.GroupBox groupBox4;             private  System.Windows.Forms.Button button2;             private  System.Windows.Forms.Label label5;             private  System.Windows.Forms.TextBox textBox6;             private  System.Windows.Forms.Label label6;             private  System.Windows.Forms.Label label7;             private  System.Windows.Forms.ProgressBar progressBar1;             private  System.Windows.Forms.TextBox textBox7;             private  System.Windows.Forms.Label label8;             private  System.Windows.Forms.Label label9;             private  System.Windows.Forms.TextBox textBox8;             private  System.Windows.Forms.Label label10;             private  System.Windows.Forms.TextBox textBox9;             private  System.Windows.Forms.Label label11;             private  System.Windows.Forms.Label label12;             private  System.Windows.Forms.TextBox textBox10;             /// <summary>              /// 必需的设计器变量。              /// </summary>              private  System.ComponentModel.Container components =  null ;                public  Form1()            {                 //                  // Windows 窗体设计器支持所必需的                  //                 InitializeComponent();                    //                  // TODO: 在 InitializeComponent 调用后添加任何构造函数代码                  //             }                /// <summary>              /// 清理所有正在使用的资源。              /// </summary>              protected   override   void  Dispose(  bool  disposing )            {                 if ( disposing )                {                     if  (components !=  null )                     {                        components.Dispose();                    }                }                 base .Dispose( disposing );            }              #region Windows 窗体设计器生成的代码              /// <summary>              /// 设计器支持所需的方法 - 不要使用代码编辑器修改              /// 此方法的内容。              /// </summary>              private   void  InitializeComponent()            {                 this .groupBox1 =  new  System.Windows.Forms.GroupBox();                 this .textBox2 =  new  System.Windows.Forms.TextBox();                 this .textBox3 =  new  System.Windows.Forms.TextBox();                 this .label2 =  new  System.Windows.Forms.Label();                 this .label1 =  new  System.Windows.Forms.Label();                 this .button1 =  new  System.Windows.Forms.Button();                 this .textBox1 =  new  System.Windows.Forms.TextBox();                 this .label6 =  new  System.Windows.Forms.Label();                 this .openFileDialog1 =  new  System.Windows.Forms.OpenFileDialog();                 this .groupBox2 =  new  System.Windows.Forms.GroupBox();                 this .textBox6 =  new  System.Windows.Forms.TextBox();                 this .textBox5 =  new  System.Windows.Forms.TextBox();                 this .label4 =  new  System.Windows.Forms.Label();                 this .textBox4 =  new  System.Windows.Forms.TextBox();                 this .label3 =  new  System.Windows.Forms.Label();                 this .label5 =  new  System.Windows.Forms.Label();                 this .label9 =  new  System.Windows.Forms.Label();                 this .groupBox3 =  new  System.Windows.Forms.GroupBox();                 this .textBox8 =  new  System.Windows.Forms.TextBox();                 this .textBox9 =  new  System.Windows.Forms.TextBox();                 this .textBox7 =  new  System.Windows.Forms.TextBox();                 this .progressBar1 =  new  System.Windows.Forms.ProgressBar();                 this .label7 =  new  System.Windows.Forms.Label();                 this .label8 =  new  System.Windows.Forms.Label();                 this .label10 =  new  System.Windows.Forms.Label();                 this .label11 =  new  System.Windows.Forms.Label();                 this .label12 =  new  System.Windows.Forms.Label();                 this .textBox10 =  new  System.Windows.Forms.TextBox();                 this .groupBox4 =  new  System.Windows.Forms.GroupBox();                 this .button2 =  new  System.Windows.Forms.Button();                 this .groupBox1.SuspendLayout();                 this .groupBox2.SuspendLayout();                 this .groupBox3.SuspendLayout();                 this .groupBox4.SuspendLayout();                 this .SuspendLayout();                 //                   // groupBox1                  //                   this .groupBox1.Controls.Add( this .textBox2);                 this .groupBox1.Controls.Add( this .textBox3);                 this .groupBox1.Controls.Add( this .label2);                 this .groupBox1.Controls.Add( this .label1);                 this .groupBox1.Controls.Add( this .button1);                 this .groupBox1.Controls.Add( this .textBox1);                 this .groupBox1.Controls.Add( this .label6);                 this .groupBox1.Location =  new  System.Drawing.Point(0, 0);                 this .groupBox1.Name =  "groupBox1" ;                 this .groupBox1.Size =  new  System.Drawing.Size(416, 96);                 this .groupBox1.TabIndex = 0;                 this .groupBox1.TabStop =  false ;                 this .groupBox1.Text =  "文件信息" ;                 //                   // textBox2                  //                   this .textBox2.Location =  new  System.Drawing.Point(80, 40);                 this .textBox2.Name =  "textBox2" ;                 this .textBox2.ReadOnly =  true ;                 this .textBox2.Size =  new  System.Drawing.Size(232, 21);                 this .textBox2.TabIndex = 3;                 //                   // textBox3                  //                   this .textBox3.Location =  new  System.Drawing.Point(80, 64);                 this .textBox3.Name =  "textBox3" ;                 this .textBox3.ReadOnly =  true ;                 this .textBox3.Size =  new  System.Drawing.Size(136, 21);                 this .textBox3.TabIndex = 3;                 //                   // label2                  //                   this .label2.Location =  new  System.Drawing.Point(8, 72);                 this .label2.Name =  "label2" ;                 this .label2.Size =  new  System.Drawing.Size(100, 16);                 this .label2.TabIndex = 4;                 this .label2.Text =  "文件大小:" ;                 //                   // label1                  //                   this .label1.Location =  new  System.Drawing.Point(16, 48);                 this .label1.Name =  "label1" ;                 this .label1.Size =  new  System.Drawing.Size(96, 16);                 this .label1.TabIndex = 2;                 this .label1.Text =  "文件名:" ;                 //                   // button1                  //                   this .button1.Location =  new  System.Drawing.Point(320, 16);                 this .button1.Name =  "button1" ;                 this .button1.Size =  new  System.Drawing.Size(88, 23);                 this .button1.TabIndex = 1;                 this .button1.Text =  "浏览" ;                 this .button1.Click +=  new  System.EventHandler( this .button1_Click);                 //                   // textBox1                  //                   this .textBox1.Location =  new  System.Drawing.Point(8, 16);                 this .textBox1.Name =  "textBox1" ;                 this .textBox1.ReadOnly =  true ;                 this .textBox1.Size =  new  System.Drawing.Size(304, 21);                 this .textBox1.TabIndex = 0;                 //                   // label6                  //                   this .label6.Location =  new  System.Drawing.Point(224, 72);                 this .label6.Name =  "label6" ;                 this .label6.Size =  new  System.Drawing.Size(96, 16);                 this .label6.TabIndex = 2;                 this .label6.Text =  "(单位:字节)" ;                 //                   // openFileDialog1                  //                   this .openFileDialog1.Filter =  "所有文件|*.*" ;                 //                   // groupBox2                  //                   this .groupBox2.Controls.Add( this .textBox6);                 this .groupBox2.Controls.Add( this .textBox5);                 this .groupBox2.Controls.Add( this .label4);                 this .groupBox2.Controls.Add( this .textBox4);                 this .groupBox2.Controls.Add( this .label3);                 this .groupBox2.Controls.Add( this .label5);                 this .groupBox2.Controls.Add( this .label9);                 this .groupBox2.Location =  new  System.Drawing.Point(0, 96);                 this .groupBox2.Name =  "groupBox2" ;                 this .groupBox2.Size =  new  System.Drawing.Size(416, 72);                 this .groupBox2.TabIndex = 1;                 this .groupBox2.TabStop =  false ;                 this .groupBox2.Text =  "系统设置" ;                 //                   // textBox6                  //                   this .textBox6.Location =  new  System.Drawing.Point(96, 40);                 this .textBox6.Name =  "textBox6" ;                 this .textBox6.Size =  new  System.Drawing.Size(72, 21);                 this .textBox6.TabIndex = 3;                 this .textBox6.Text =  "50000" ;                 //                   // textBox5                  //                   this .textBox5.Location =  new  System.Drawing.Point(320, 16);                 this .textBox5.Name =  "textBox5" ;                 this .textBox5.Size =  new  System.Drawing.Size(80, 21);                 this .textBox5.TabIndex = 3;                 this .textBox5.Text =  "2005" ;                 //                   // label4                  //                   this .label4.Location =  new  System.Drawing.Point(256, 24);                 this .label4.Name =  "label4" ;                 this .label4.Size =  new  System.Drawing.Size(100, 16);                 this .label4.TabIndex = 2;                 this .label4.Text =  "传输端口:" ;                 //                   // textBox4                  //                   this .textBox4.Location =  new  System.Drawing.Point(96, 16);                 this .textBox4.Name =  "textBox4" ;                 this .textBox4.ReadOnly =  true ;                 this .textBox4.Size =  new  System.Drawing.Size(144, 21);                 this .textBox4.TabIndex = 1;                 //                   // label3                  //                   this .label3.Location =  new  System.Drawing.Point(16, 24);                 this .label3.Name =  "label3" ;                 this .label3.Size =  new  System.Drawing.Size(100, 16);                 this .label3.TabIndex = 0;                 this .label3.Text =  "本机IP地址:" ;                 //                   // label5                  //                   this .label5.Location =  new  System.Drawing.Point(24, 48);                 this .label5.Name =  "label5" ;                 this .label5.Size =  new  System.Drawing.Size(88, 16);                 this .label5.TabIndex = 2;                 this .label5.Text =  "包的大小:" ;                 //                   // label9                  //                   this .label9.Location =  new  System.Drawing.Point(176, 48);                 this .label9.Name =  "label9" ;                 this .label9.Size =  new  System.Drawing.Size(224, 16);                 this .label9.TabIndex = 2;                 this .label9.Text =  "(范围:10000 - 60000 单位:字节)" ;                 //                   // groupBox3                  //                   this .groupBox3.Controls.Add( this .textBox8);                 this .groupBox3.Controls.Add( this .textBox9);                 this .groupBox3.Controls.Add( this .textBox7);                 this .groupBox3.Controls.Add( this .progressBar1);                 this .groupBox3.Controls.Add( this .label7);                 this .groupBox3.Controls.Add( this .label8);                 this .groupBox3.Controls.Add( this .label10);                 this .groupBox3.Controls.Add( this .label11);                 this .groupBox3.Controls.Add( this .label12);                 this .groupBox3.Controls.Add( this .textBox10);                 this .groupBox3.Location =  new  System.Drawing.Point(0, 168);                 this .groupBox3.Name =  "groupBox3" ;                 this .groupBox3.Size =  new  System.Drawing.Size(416, 168);                 this .groupBox3.TabIndex = 2;                 this .groupBox3.TabStop =  false ;                 this .groupBox3.Text =  "状态信息" ;                 //                   // textBox8                  //                   this .textBox8.Location =  new  System.Drawing.Point(120, 40);                 this .textBox8.Name =  "textBox8" ;                 this .textBox8.ReadOnly =  true ;                 this .textBox8.Size =  new  System.Drawing.Size(160, 21);                 this .textBox8.TabIndex = 1;                 //                   // textBox9                  //                   this .textBox9.Location =  new  System.Drawing.Point(120, 64);                 this .textBox9.Name =  "textBox9" ;                 this .textBox9.ReadOnly =  true ;                 this .textBox9.Size =  new  System.Drawing.Size(80, 21);                 this .textBox9.TabIndex = 1;                 //                   // textBox7                  //                   this .textBox7.Location =  new  System.Drawing.Point(120, 16);                 this .textBox7.Name =  "textBox7" ;                 this .textBox7.ReadOnly =  true ;                 this .textBox7.Size =  new  System.Drawing.Size(160, 21);                 this .textBox7.TabIndex = 1;                 //                   // progressBar1                  //                   this .progressBar1.Location =  new  System.Drawing.Point(8, 136);                 this .progressBar1.Name =  "progressBar1" ;                 this .progressBar1.Size =  new  System.Drawing.Size(400, 23);                 this .progressBar1.Step = 1;                 this .progressBar1.TabIndex = 3;                 //                   // label7                  //                   this .label7.Location =  new  System.Drawing.Point(32, 24);                 this .label7.Name =  "label7" ;                 this .label7.Size =  new  System.Drawing.Size(96, 16);                 this .label7.TabIndex = 2;                 this .label7.Text =  "接收端IP地址:" ;                 //                   // label8                  //                   this .label8.Location =  new  System.Drawing.Point(40, 48);                 this .label8.Name =  "label8" ;                 this .label8.Size =  new  System.Drawing.Size(80, 16);                 this .label8.TabIndex = 2;                 this .label8.Text =  "包的总数量:" ;                 //                   // label10                  //                   this .label10.Location =  new  System.Drawing.Point(8, 72);                 this .label10.Name =  "label10" ;                 this .label10.Size =  new  System.Drawing.Size(120, 16);                 this .label10.TabIndex = 2;                 this .label10.Text =  "最后一个包的大小:" ;                 //                   // label11                  //                   this .label11.Location =  new  System.Drawing.Point(200, 72);                 this .label11.Name =  "label11" ;                 this .label11.Size =  new  System.Drawing.Size(96, 16);                 this .label11.TabIndex = 2;                 this .label11.Text =  "(单位:字节)" ;                 //                   // label12                  //                   this .label12.Location =  new  System.Drawing.Point(16, 96);                 this .label12.Name =  "label12" ;                 this .label12.Size =  new  System.Drawing.Size(104, 16);                 this .label12.TabIndex = 2;                 this .label12.Text =  "已发送包的数量:" ;                 //                   // textBox10                  //                   this .textBox10.Location =  new  System.Drawing.Point(120, 88);                 this .textBox10.Name =  "textBox10" ;                 this .textBox10.ReadOnly =  true ;                 this .textBox10.Size =  new  System.Drawing.Size(80, 21);                 this .textBox10.TabIndex = 1;                 //                   // groupBox4                  //                   this .groupBox4.Controls.Add( this .button2);                 this .groupBox4.Location =  new  System.Drawing.Point(0, 336);                 this .groupBox4.Name =  "groupBox4" ;                 this .groupBox4.Size =  new  System.Drawing.Size(416, 48);                 this .groupBox4.TabIndex = 3;                 this .groupBox4.TabStop =  false ;                 this .groupBox4.Text =  "系统控制" ;                 //                   // button2                  //                   this .button2.Location =  new  System.Drawing.Point(16, 16);                 this .button2.Name =  "button2" ;                 this .button2.Size =  new  System.Drawing.Size(75, 23);                 this .button2.TabIndex = 0;                 this .button2.Text =  "开始发送" ;                 this .button2.Click +=  new  System.EventHandler( this .button2_Click);                 //                   // Form1                  //                   this .AutoScaleBaseSize =  new  System.Drawing.Size(6, 14);                 this .ClientSize =  new  System.Drawing.Size(416, 389);                 this .Controls.Add( this .groupBox4);                 this .Controls.Add( this .groupBox3);                 this .Controls.Add( this .groupBox2);                 this .Controls.Add( this .groupBox1);                 this .FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;                 this .MaximizeBox =  false ;                 this .Name =  "Form1" ;                 this .Text =  "点对点文件传输软体发送端" ;                 this .Load +=  new  System.EventHandler( this .EzoneSend_Load);                 this .groupBox1.ResumeLayout( false );                 this .groupBox1.PerformLayout();                 this .groupBox2.ResumeLayout( false );                 this .groupBox2.PerformLayout();                 this .groupBox3.ResumeLayout( false );                 this .groupBox3.PerformLayout();                 this .groupBox4.ResumeLayout( false );                 this .ResumeLayout( false );               }            #endregion                 /// <summary>              /// 应用程序的主入口点。              /// </summary>             [STAThread]             static   void  Main()             {                Application.Run( new  Form1());            }                private   void  button1_Click( object  sender, System.EventArgs e)            {                 //选择要进行传输的文件                  if ( this .openFileDialog1.ShowDialog()==DialogResult.OK)                {                    FileInfo EzoneFile= new  FileInfo( this .openFileDialog1.FileName);                     this .textBox1.Text=EzoneFile.FullName;                     this .textBox2.Text=EzoneFile.Name;                     this .textBox3.Text=EzoneFile.Length.ToString();                                    }            }                   private   void  StartSend()            {                            //创建一个文件对象                 FileInfo EzoneFile= new  FileInfo( this .textBox1.Text);                 //打开文件流                 FileStream EzoneStream=EzoneFile.OpenRead();                 //包的大小                  int  PacketSize= int .Parse( this .textBox6.Text);                 //包的数量                  int  PacketCount=( int )(EzoneStream.Length/(( long )PacketSize));                 this .textBox8.Text=PacketCount.ToString();                 this .progressBar1.Maximum=PacketCount;                 //最后一个包的大小                  int  LastDataPacket=( int )(EzoneStream.Length-(( long )(PacketSize*PacketCount)));                 this .textBox9.Text=LastDataPacket.ToString();                                 ////创建一个网络端点                  //IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.1.136"), int.Parse(this.textBox5.Text));                    ////MessageBox.Show(IPAddress.Any);                     ////创建一个套接字                  //Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                    //MessageBox.Show(server.ToString());                           //指向远程服务端节点                 IPEndPoint ipep =  new  IPEndPoint(IPAddress.Parse( "192.168.1.136" ),  int .Parse( this .textBox5.Text));                 //创建套接字                 Socket client =  new  Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                 //连接到发送端                 client.Connect(ipep);                                ////绑定套接字到端口                  //client.Bind(ipep);                     //MessageBox.Show(ipep.ToString());                     ////开始侦听(并堵塞该线程)                  //server.Listen(10);                  //确认连接                  //Socket client = server.Accept();                     //MessageBox.Show(client.ToString());                                                                 //获得客户端节点对象                 IPEndPoint clientep=(IPEndPoint)client.RemoteEndPoint;                 //获得客户端的IP地址                  //this.textBox7.Text=clientep.Address.ToString();                  //发送[文件名]到客户端                 CommonModule.EzoneModule.SendVarData(client,System.Text.Encoding.Unicode.GetBytes(EzoneFile.Name));                 //发送[包的大小]到客户端                 CommonModule.EzoneModule.SendVarData(client,System.Text.Encoding.Unicode.GetBytes(PacketSize.ToString()));                 //发送[包的总数量]到客户端                 CommonModule.EzoneModule.SendVarData(client,System.Text.Encoding.Unicode.GetBytes(PacketCount.ToString()));                 //发送[最后一个包的大小]到客户端                 CommonModule.EzoneModule.SendVarData(client,System.Text.Encoding.Unicode.GetBytes(LastDataPacket.ToString()));                    //数据包                  byte [] data= new   byte [PacketSize];                 //开始循环发送数据包                  for ( int  i=0;i<PacketCount;i++)                {                     //从文件流读取数据并填充数据包                     EzoneStream.Read(data,0,data.Length);                     //发送数据包                     CommonModule.EzoneModule.SendVarData(client,data);                     //显示发送数据包的个数                      this .textBox10.Text=(( int )(i+1)).ToString();                     //进度条值的显示                      this .progressBar1.PerformStep();                }                    //如果还有多余的数据包,则应该发送完毕!                  if (LastDataPacket!=0)                {                    data= new   byte [LastDataPacket];                    EzoneStream.Read(data,0,data.Length);                    CommonModule.EzoneModule.SendVarData(client,data);                     this .progressBar1.Value= this .progressBar1.Maximum;                }                    //关闭套接字                 client.Close();                 //server.Close();                  //关闭文件流                 EzoneStream.Close();                 this .button2.Enabled= true ;                MessageBox.Show( "文件传输完毕!" );            }                   private   void  button2_Click( object  sender, System.EventArgs e)            {                 //开启文件传输子线程                 Thread TempThread= new  Thread( new  ThreadStart( this .StartSend));                TempThread.Start();                 this .button2.Enabled= false ;            }                private   void  EzoneSend_Load( object  sender, System.EventArgs e)            {                 //获得本机的IP地址                  this .textBox4.Text=Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString();            }        }    }  

[c#]   view plain copy

////////////////////////////////////////////////////////////////////////////////    //title: 点对点文件传输程序                                           //    ////////////////////////////////////////////////////////////////////////////////       //////////////////////////Begin-发送端//////////////////////////////////    using  System;   using  System.Drawing;   using  System.Collections;   using  System.ComponentModel;   using  System.Windows.Forms;   using  System.Data;   using  System.IO;   using  System.Net;   using  System.Net.Sockets;   using  System.Threading;      namespace  发送端   {        /// <summary>         /// Form1 的摘要说明。         /// </summary>         public   class  Form1 : System.Windows.Forms.Form       {            private  System.Windows.Forms.GroupBox groupBox1;            private  System.Windows.Forms.OpenFileDialog openFileDialog1;            private  System.Windows.Forms.TextBox textBox1;            private  System.Windows.Forms.Button button1;            private  System.Windows.Forms.Label label1;            private  System.Windows.Forms.TextBox textBox2;            private  System.Windows.Forms.Label label2;            private  System.Windows.Forms.TextBox textBox3;            private  System.Windows.Forms.GroupBox groupBox2;            private  System.Windows.Forms.Label label3;            private  System.Windows.Forms.TextBox textBox4;            private  System.Windows.Forms.Label label4;            private  System.Windows.Forms.TextBox textBox5;            private  System.Windows.Forms.GroupBox groupBox3;            private  System.Windows.Forms.GroupBox groupBox4;            private  System.Windows.Forms.Button button2;            private  System.Windows.Forms.Label label5;            private  System.Windows.Forms.TextBox textBox6;            private  System.Windows.Forms.Label label6;            private  System.Windows.Forms.Label label7;            private  System.Windows.Forms.ProgressBar progressBar1;            private  System.Windows.Forms.TextBox textBox7;            private  System.Windows.Forms.Label label8;            private  System.Windows.Forms.Label label9;            private  System.Windows.Forms.TextBox textBox8;            private  System.Windows.Forms.Label label10;            private  System.Windows.Forms.TextBox textBox9;            private  System.Windows.Forms.Label label11;            private  System.Windows.Forms.Label label12;            private  System.Windows.Forms.TextBox textBox10;            /// <summary>             /// 必需的设计器变量。             /// </summary>             private  System.ComponentModel.Container components =  null ;               public  Form1()           {                //                 // Windows 窗体设计器支持所必需的                 //                InitializeComponent();                   //                 // TODO: 在 InitializeComponent 调用后添加任何构造函数代码                 //            }               /// <summary>             /// 清理所有正在使用的资源。             /// </summary>             protected   override   void  Dispose(  bool  disposing )           {                if ( disposing )               {                    if  (components !=  null )                    {                       components.Dispose();                   }               }                base .Dispose( disposing );           }             #region Windows 窗体设计器生成的代码             /// <summary>             /// 设计器支持所需的方法 - 不要使用代码编辑器修改             /// 此方法的内容。             /// </summary>             private   void  InitializeComponent()           {                this .groupBox1 =  new  System.Windows.Forms.GroupBox();                this .textBox2 =  new  System.Windows.Forms.TextBox();                this .textBox3 =  new  System.Windows.Forms.TextBox();                this .label2 =  new  System.Windows.Forms.Label();                this .label1 =  new  System.Windows.Forms.Label();                this .button1 =  new  System.Windows.Forms.Button();                this .textBox1 =  new  System.Windows.Forms.TextBox();                this .label6 =  new  System.Windows.Forms.Label();                this .openFileDialog1 =  new  System.Windows.Forms.OpenFileDialog();                this .groupBox2 =  new  System.Windows.Forms.GroupBox();                this .textBox6 =  new  System.Windows.Forms.TextBox();                this .textBox5 =  new  System.Windows.Forms.TextBox();                this .label4 =  new  System.Windows.Forms.Label();                this .textBox4 =  new  System.Windows.Forms.TextBox();                this .label3 =  new  System.Windows.Forms.Label();                this .label5 =  new  System.Windows.Forms.Label();                this .label9 =  new  System.Windows.Forms.Label();                this .groupBox3 =  new  System.Windows.Forms.GroupBox();                this .textBox8 =  new  System.Windows.Forms.TextBox();                this .textBox9 =  new  System.Windows.Forms.TextBox();                this .textBox7 =  new  System.Windows.Forms.TextBox();                this .progressBar1 =  new  System.Windows.Forms.ProgressBar();                this .label7 =  new  System.Windows.Forms.Label();                this .label8 =  new  System.Windows.Forms.Label();                this .label10 =  new  System.Windows.Forms.Label();                this .label11 =  new  System.Windows.Forms.Label();                this .label12 =  new  System.Windows.Forms.Label();                this .textBox10 =  new  System.Windows.Forms.TextBox();                this .groupBox4 =  new  System.Windows.Forms.GroupBox();                this .button2 =  new  System.Windows.Forms.Button();                this .groupBox1.SuspendLayout();                this .groupBox2.SuspendLayout();                this .groupBox3.SuspendLayout();                this .groupBox4.SuspendLayout();                this .SuspendLayout();                //                  // groupBox1                 //                  this .groupBox1.Controls.Add( this .textBox2);                this .groupBox1.Controls.Add( this .textBox3);                this .groupBox1.Controls.Add( this .label2);                this .groupBox1.Controls.Add( this .label1);                this .groupBox1.Controls.Add( this .button1);                this .groupBox1.Controls.Add( this .textBox1);                this .groupBox1.Controls.Add( this .label6);                this .groupBox1.Location =  new  System.Drawing.Point(0, 0);                this .groupBox1.Name =  "groupBox1" ;                this .groupBox1.Size =  new  System.Drawing.Size(416, 96);                this .groupBox1.TabIndex = 0;                this .groupBox1.TabStop =  false ;                this .groupBox1.Text =  "文件信息" ;                //                  // textBox2                 //                  this .textBox2.Location =  new  System.Drawing.Point(80, 40);                this .textBox2.Name =  "textBox2" ;                this .textBox2.ReadOnly =  true ;                this .textBox2.Size =  new  System.Drawing.Size(232, 21);                this .textBox2.TabIndex = 3;                //                  // textBox3                 //                  this .textBox3.Location =  new  System.Drawing.Point(80, 64);                this .textBox3.Name =  "textBox3" ;                this .textBox3.ReadOnly =  true ;                this .textBox3.Size =  new  System.Drawing.Size(136, 21);                this .textBox3.TabIndex = 3;                //                  // label2                 //                  this .label2.Location =  new  System.Drawing.Point(8, 72);                this .label2.Name =  "label2" ;                this .label2.Size =  new  System.Drawing.Size(100, 16);                this .label2.TabIndex = 4;                this .label2.Text =  "文件大小:" ;                //                  // label1                 //                  this .label1.Location =  new  System.Drawing.Point(16, 48);                this .label1.Name =  "label1" ;                this .label1.Size =  new  System.Drawing.Size(96, 16);                this .label1.TabIndex = 2;                this .label1.Text =  "文件名:" ;                //                  // button1                 //                  this .button1.Location =  new  System.Drawing.Point(320, 16);                this .button1.Name =  "button1" ;                this .button1.Size =  new  System.Drawing.Size(88, 23);                this .button1.TabIndex = 1;                this .button1.Text =  "浏览" ;                this .button1.Click +=  new  System.EventHandler( this .button1_Click);                //                  // textBox1                 //                  this .textBox1.Location =  new  System.Drawing.Point(8, 16);                this .textBox1.Name =  "textBox1" ;                this .textBox1.ReadOnly =  true ;                this .textBox1.Size =  new  System.Drawing.Size(304, 21);                this .textBox1.TabIndex = 0;                //                  // label6                 //                  this .label6.Location =  new  System.Drawing.Point(224, 72);                this .label6.Name =  "label6" ;                this .label6.Size =  new  System.Drawing.Size(96, 16);                this .label6.TabIndex = 2;                this .label6.Text =  "(单位:字节)" ;                //                  // openFileDialog1                 //                  this .openFileDialog1.Filter =  "所有文件|*.*" ;                //                  // groupBox2                 //                  this .groupBox2.Controls.Add( this .textBox6);                this .groupBox2.Controls.Add( this .textBox5);                this .groupBox2.Controls.Add( this .label4);                this .groupBox2.Controls.Add( this .textBox4);                this .groupBox2.Controls.Add( this .label3);                this .groupBox2.Controls.Add( this .label5);                this .groupBox2.Controls.Add( this .label9);                this .groupBox2.Location =  new  System.Drawing.Point(0, 96);                this .groupBox2.Name =  "groupBox2" ;                this .groupBox2.Size =  new  System.Drawing.Size(416, 72);                this .groupBox2.TabIndex = 1;                this .groupBox2.TabStop =  false ;                this .groupBox2.Text =  "系统设置" ;                //                  // textBox6                 //                  this .textBox6.Location =  new  System.Drawing.Point(96, 40);                this .textBox6.Name =  "textBox6" ;                this .textBox6.Size =  new  System.Drawing.Size(72, 21);                this .textBox6.TabIndex = 3;                this .textBox6.Text =  "50000" ;                //                  // textBox5                 //                  this .textBox5.Location =  new  System.Drawing.Point(320, 16);                this .textBox5.Name =  "textBox5" ;                this .textBox5.Size =  new  System.Drawing.Size(80, 21);                this .textBox5.TabIndex = 3;                this .textBox5.Text =  "2005" ;                //                  // label4                 //                  this .label4.Location =  new  System.Drawing.Point(256, 24);                this .label4.Name =  "label4" ;                this .label4.Size =  new  System.Drawing.Size(100, 16);                this .label4.TabIndex = 2;                this .label4.Text =  "传输端口:" ;                //                  // textBox4                 //                  this .textBox4.Location =  new  System.Drawing.Point(96, 16);                this .textBox4.Name =  "textBox4" ;                this .textBox4.ReadOnly =  true ;                this .textBox4.Size =  new  System.Drawing.Size(144, 21);                this .textBox4.TabIndex = 1;                //                  // label3                 //                  this .label3.Location =  new  System.Drawing.Point(16, 24);                this .label3.Name =  "label3" ;                this .label3.Size =  new  System.Drawing.Size(100, 16);                this .label3.TabIndex = 0;                this .label3.Text =  "本机IP地址:" ;                //                  // label5                 //                  this .label5.Location =  new  System.Drawing.Point(24, 48);                this .label5.Name =  "label5" ;                this .label5.Size =  new  System.Drawing.Size(88, 16);                this .label5.TabIndex = 2;                this .label5.Text =  "包的大小:" ;                //                  // label9                 //                  this .label9.Location =  new  System.Drawing.Point(176, 48);                this .label9.Name =  "label9" ;                this .label9.Size =  new  System.Drawing.Size(224, 16);                this .label9.TabIndex = 2;                this .label9.Text =  "(范围:10000 - 60000 单位:字节)" ;                //                  // groupBox3                 //                  this .groupBox3.Controls.Add( this .textBox8);                this .groupBox3.Controls.Add( this .textBox9);                this .groupBox3.Controls.Add( this .textBox7);                this .groupBox3.Controls.Add( this .progressBar1);                this .groupBox3.Controls.Add( this .label7);                this .groupBox3.Controls.Add( this .label8);                this .groupBox3.Controls.Add( this .label10);                this .groupBox3.Controls.Add( this .label11);                this .groupBox3.Controls.Add( this .label12);                this .groupBox3.Controls.Add( this .textBox10);                this .groupBox3.Location =  new  System.Drawing.Point(0, 168);                this .groupBox3.Name =  "groupBox3" ;                this .groupBox3.Size =  new  System.Drawing.Size(416, 168);                this .groupBox3.TabIndex = 2;                this .groupBox3.TabStop =  false ;                this .groupBox3.Text =  "状态信息" ;                //                  // textBox8                 //                  this .textBox8.Location =  new  System.Drawing.Point(120, 40);                this .textBox8.Name =  "textBox8" ;                this .textBox8.ReadOnly =  true ;                this .textBox8.Size =  new  System.Drawing.Size(160, 21);                this .textBox8.TabIndex = 1;                //                  // textBox9                 //                  this .textBox9.Location =  new  System.Drawing.Point(120, 64);                this .textBox9.Name =  "textBox9" ;                this .textBox9.ReadOnly =  true ;                this .textBox9.Size =  new  System.Drawing.Size(80, 21);                this .textBox9.TabIndex = 1;                //                  // textBox7                 //                  this .textBox7.Location =  new  System.Drawing.Point(120, 16);                this .textBox7.Name =  "textBox7" ;                this .textBox7.ReadOnly =  true ;                this .textBox7.Size =  new  System.Drawing.Size(160, 21);                this .textBox7.TabIndex = 1;                //                  // progressBar1                 //                  this .progressBar1.Location =  new  System.Drawing.Point(8, 136);                this .progressBar1.Name =  "progressBar1" ;                this .progressBar1.Size =  new  System.Drawing.Size(400, 23);                this .progressBar1.Step = 1;                this .progressBar1.TabIndex = 3;                //                  // label7                 //                  this .label7.Location =  new  System.Drawing.Point(32, 24);                this .label7.Name =  "label7" ;                this .label7.Size =  new  System.Drawing.Size(96, 16);                this .label7.TabIndex = 2;                this .label7.Text =  "接收端IP地址:" ;                //                  // label8                 //                  this .label8.Location =  new  System.Drawing.Point(40, 48);                this .label8.Name =  "label8" ;                this .label8.Size =  new  System.Drawing.Size(80, 16);                this .label8.TabIndex = 2;                this .label8.Text =  "包的总数量:" ;                //                  // label10                 //                  this .label10.Location =  new  System.Drawing.Point(8, 72);                this .label10.Name =  "label10" ;                this .label10.Size =  new  System.Drawing.Size(120, 16);                this .label10.TabIndex = 2;                this .label10.Text =  "最后一个包的大小:" ;                //                  // label11                 //                  this .label11.Location =  new  System.Drawing.Point(200, 72);                this .label11.Name =  "label11" ;                this .label11.Size =  new  System.Drawing.Size(96, 16);                this .label11.TabIndex = 2;                this .label11.Text =  "(单位:字节)" ;                //                  // label12                 //                  this .label12.Location =  new  System.Drawing.Point(16, 96);                this .label12.Name =  "label12" ;                this .label12.Size =  new  System.Drawing.Size(104, 16);                this .label12.TabIndex = 2;                this .label12.Text =  "已发送包的数量:" ;                //                  // textBox10                 //                  this .textBox10.Location =  new  System.Drawing.Point(120, 88);                this .textBox10.Name =  "textBox10" ;                this .textBox10.ReadOnly =  true ;                this .textBox10.Size =  new  System.Drawing.Size(80, 21);                this .textBox10.TabIndex = 1;                //                  // groupBox4                 //                  this .groupBox4.Controls.Add( this .button2);                this .groupBox4.Location =  new  System.Drawing.Point(0, 336);                this .groupBox4.Name =  "groupBox4" ;                this .groupBox4.Size =  new  System.Drawing.Size(416, 48);                this .groupBox4.TabIndex = 3;                this .groupBox4.TabStop =  false ;                this .groupBox4.Text =  "系统控制" ;                //                  // button2                 //                  this .button2.Location =  new  System.Drawing.Point(16, 16);                this .button2.Name =  "button2" ;                this .button2.Size =  new  System.Drawing.Size(75, 23);                this .button2.TabIndex = 0;                this .button2.Text =  "开始发送" ;                this .button2.Click +=  new  System.EventHandler( this .button2_Click);                //                  // Form1                 //                  this .AutoScaleBaseSize =  new  System.Drawing.Size(6, 14);                this .ClientSize =  new  System.Drawing.Size(416, 389);                this .Controls.Add( this .groupBox4);                this .Controls.Add( this .groupBox3);                this .Controls.Add( this .groupBox2);                this .Controls.Add( this .groupBox1);                this .FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;                this .MaximizeBox =  false ;                this .Name =  "Form1" ;                this .Text =  "点对点文件传输软体发送端" ;                this .Load +=  new  System.EventHandler( this .EzoneSend_Load);                this .groupBox1.ResumeLayout( false );                this .groupBox1.PerformLayout();                this .groupBox2.ResumeLayout( false );                this .groupBox2.PerformLayout();                this .groupBox3.ResumeLayout( false );                this .groupBox3.PerformLayout();                this .groupBox4.ResumeLayout( false );                this .ResumeLayout( false );              }           #endregion                /// <summary>             /// 应用程序的主入口点。             /// </summary>            [STAThread]            static   void  Main()            {               Application.Run( new  Form1());           }               private   void  button1_Click( object  sender, System.EventArgs e)           {                //选择要进行传输的文件                 if ( this .openFileDialog1.ShowDialog()==DialogResult.OK)               {                   FileInfo EzoneFile= new  FileInfo( this .openFileDialog1.FileName);                    this .textBox1.Text=EzoneFile.FullName;                    this .textBox2.Text=EzoneFile.Name;                    this .textBox3.Text=EzoneFile.Length.ToString();                                  }           }                  private   void  StartSend()           {                           //创建一个文件对象                FileInfo EzoneFile= new  FileInfo( this .textBox1.Text);                //打开文件流                FileStream EzoneStream=EzoneFile.OpenRead();                //包的大小                 int  PacketSize= int .Parse( this .textBox6.Text);                //包的数量                 int  PacketCount=( int )(EzoneStream.Length/(( long )PacketSize));                this .textBox8.Text=PacketCount.ToString();                this .progressBar1.Maximum=PacketCount;                //最后一个包的大小                 int  LastDataPacket=( int )(EzoneStream.Length-(( long )(PacketSize*PacketCount)));                this .textBox9.Text=LastDataPacket.ToString();                               ////创建一个网络端点                 //IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.1.136"), int.Parse(this.textBox5.Text));                    ////MessageBox.Show(IPAddress.Any);                    ////创建一个套接字                 //Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                    //MessageBox.Show(server.ToString());                          //指向远程服务端节点                IPEndPoint ipep =  new  IPEndPoint(IPAddress.Parse( "192.168.1.136" ),  int .Parse( this .textBox5.Text));                //创建套接字                Socket client =  new  Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                //连接到发送端                client.Connect(ipep);                               ////绑定套接字到端口                 //client.Bind(ipep);                    //MessageBox.Show(ipep.ToString());                    ////开始侦听(并堵塞该线程)                 //server.Listen(10);                 //确认连接                 //Socket client = server.Accept();                    //MessageBox.Show(client.ToString());                                                              //获得客户端节点对象                IPEndPoint clientep=(IPEndPoint)client.RemoteEndPoint;                //获得客户端的IP地址                 //this.textBox7.Text=clientep.Address.ToString();                 //发送[文件名]到客户端                CommonModule.EzoneModule.SendVarData(client,System.Text.Encoding.Unicode.GetBytes(EzoneFile.Name));                //发送[包的大小]到客户端                CommonModule.EzoneModule.SendVarData(client,System.Text.Encoding.Unicode.GetBytes(PacketSize.ToString()));                //发送[包的总数量]到客户端                CommonModule.EzoneModule.SendVarData(client,System.Text.Encoding.Unicode.GetBytes(PacketCount.ToString()));                //发送[最后一个包的大小]到客户端                CommonModule.EzoneModule.SendVarData(client,System.Text.Encoding.Unicode.GetBytes(LastDataPacket.ToString()));                   //数据包                 byte [] data= new   byte [PacketSize];                //开始循环发送数据包                 for ( int  i=0;i<PacketCount;i++)               {                    //从文件流读取数据并填充数据包                    EzoneStream.Read(data,0,data.Length);                    //发送数据包                    CommonModule.EzoneModule.SendVarData(client,data);                    //显示发送数据包的个数                     this .textBox10.Text=(( int )(i+1)).ToString();                    //进度条值的显示                     this .progressBar1.PerformStep();               }                   //如果还有多余的数据包,则应该发送完毕!                 if (LastDataPacket!=0)               {                   data= new   byte [LastDataPacket];                   EzoneStream.Read(data,0,data.Length);                   CommonModule.EzoneModule.SendVarData(client,data);                    this .progressBar1.Value= this .progressBar1.Maximum;               }                   //关闭套接字                client.Close();                //server.Close();                 //关闭文件流                EzoneStream.Close();                this .button2.Enabled= true ;               MessageBox.Show( "文件传输完毕!" );           }                  private   void  button2_Click( object  sender, System.EventArgs e)           {                //开启文件传输子线程                Thread TempThread= new  Thread( new  ThreadStart( this .StartSend));               TempThread.Start();                this .button2.Enabled= false ;           }               private   void  EzoneSend_Load( object  sender, System.EventArgs e)           {                //获得本机的IP地址                 this .textBox4.Text=Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString();           }       }   }  



公共类,服务端客户端都需要用到 

C#代码 

////////////////////////////Begin-公共模块//////////////////////////////////////           using  System;    using  System.Collections.Generic;    using  System.Text;       using  System.Net;    using  System.Net.Sockets;    using  System.Windows.Forms;       namespace  TestSocketServerHSTF    {         class  TransferFiles        {             public  TransferFiles()            {                 //                  // TODO: 在此处添加构造函数逻辑                  //             }                      public   static   int  SendData(Socket s,  byte [] data)            {                 int  total = 0;                 int  size = data.Length;                 int  dataleft = size;                 int  sent;                    while  (total < size)                {                    sent = s.Send(data, total, dataleft, SocketFlags.None);                    total += sent;                    dataleft -= sent;                }                    return  total;            }                public   static   byte [] ReceiveData(Socket s,  int  size)            {                 int  total = 0;                 int  dataleft = size;                 byte [] data =  new   byte [size];                 int  recv;                 while  (total < size)                {                    recv = s.Receive(data, total, dataleft, SocketFlags.None);                     if  (recv == 0)                    {                        data =  null ;                         break ;                    }                       total += recv;                    dataleft -= recv;                }                 return  data;            }                public   static   int  SendVarData(Socket s,  byte [] data)            {                 int  total = 0;                 int  size = data.Length;                 int  dataleft = size;                 int  sent;                 byte [] datasize =  new   byte [4];                datasize = BitConverter.GetBytes(size);                sent = s.Send(datasize);                    while  (total < size)                {                    sent = s.Send(data, total, dataleft, SocketFlags.None);                    total += sent;                    dataleft -= sent;                }                    return  total;            }                public   static   byte [] ReceiveVarData(Socket s)            {                 int  total = 0;                 int  recv;                 byte [] datasize =  new   byte [4];                recv = s.Receive(datasize, 0, 4, SocketFlags.None);                 int  size = BitConverter.ToInt32(datasize, 0);                 int  dataleft = size;                 byte [] data =  new   byte [size];                 while  (total < size)                {                    recv = s.Receive(data, total, dataleft, SocketFlags.None);                     if  (recv == 0)                    {                        data =  null ;                         break ;                    }                    total += recv;                    dataleft -= recv;                }                 return  data;            }        }    }                /////////////////////////////End-公共模块///////////////////////////////////////   

[c#]   view plain copy

////////////////////////////Begin-公共模块//////////////////////////////////////          using  System;   using  System.Collections.Generic;   using  System.Text;      using  System.Net;   using  System.Net.Sockets;   using  System.Windows.Forms;      namespace  TestSocketServerHSTF   {        class  TransferFiles       {            public  TransferFiles()           {                //                 // TODO: 在此处添加构造函数逻辑                 //            }                     public   static   int  SendData(Socket s,  byte [] data)           {                int  total = 0;                int  size = data.Length;                int  dataleft = size;                int  sent;                   while  (total < size)               {                   sent = s.Send(data, total, dataleft, SocketFlags.None);                   total += sent;                   dataleft -= sent;               }                   return  total;           }               public   static   byte [] ReceiveData(Socket s,  int  size)           {                int  total = 0;                int  dataleft = size;                byte [] data =  new   byte [size];                int  recv;                while  (total < size)               {                   recv = s.Receive(data, total, dataleft, SocketFlags.None);                    if  (recv == 0)                   {                       data =  null ;                        break ;                   }                      total += recv;                   dataleft -= recv;               }                return  data;           }               public   static   int  SendVarData(Socket s,  byte [] data)           {                int  total = 0;                int  size = data.Length;                int  dataleft = size;                int  sent;                byte [] datasize =  new   byte [4];               datasize = BitConverter.GetBytes(size);               sent = s.Send(datasize);                   while  (total < size)               {                   sent = s.Send(data, total, dataleft, SocketFlags.None);                   total += sent;                   dataleft -= sent;               }                   return  total;           }               public   static   byte [] ReceiveVarData(Socket s)           {                int  total = 0;                int  recv;                byte [] datasize =  new   byte [4];               recv = s.Receive(datasize, 0, 4, SocketFlags.None);                int  size = BitConverter.ToInt32(datasize, 0);                int  dataleft = size;                byte [] data =  new   byte [size];                while  (total < size)               {                   recv = s.Receive(data, total, dataleft, SocketFlags.None);                    if  (recv == 0)                   {                       data =  null ;                        break ;                   }                   total += recv;                   dataleft -= recv;               }                return  data;           }       }   }               /////////////////////////////End-公共模块///////////////////////////////////////  

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于c# winform socket网络编程,点对点传输文件,socket文件传输,监听端口的详细内容...

  阅读:54次