c#winform socket网络编程点对点传输文件socket文件传输监

2016-02-19 12:23 23 1 收藏

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享c#winform socket网络编程点对点传输文件socket文件传输监的教程,热爱PS的朋友们快点看过来吧!

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  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           }    }  

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

  ////////////////////////////////////////////////////////////////////////////////    //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;           

来源:https://www.tulaoshi.com/n/20160219/1600775.html

延伸阅读
功能说明: 处理传送进来的文件。 语 法: uupick [-v][-I<配置文件][-s<主机][-x<层级][--help] 补充说明: 当其他主机通过UUCP将文件传送进来时,可利用uupick指令取出这些文件。 参 数:   -I<配置文件或--config<配置文件   指定配置文件。   -s<主机或--system&l...
功能说明: 中断FTP连线并结束程序。 语 法: bye 补充说明: 在ftp模式下,输入bye即可中断目前的连线作业,并结束ftp的执行。
功能说明: 设置文件系统相关功能。 语 法: ftp [-dignv][主机名称或IP地址] 补充说明: FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身。 参 数:   -d   详细显示指令执行过程,便于排错或分析程序执行的情形。   -i   关闭互动模式,不询问任何...
功能说明: 在指定的时间关闭FTP服务器。 语 法: ftpshut [-d<分钟][-l<分钟][关闭时间]["警告信息"] 补充说明: 本指令提供系统管理者在设置的时间关闭FTP服务器,且能在关闭之前发出警告信息通知用户。关闭时间若设置后为"none",则会马上关闭服务器。如果采用"+30"的方式来设置表示服务器在30分钟之后关闭。依次类...
酷盘是否限制文件传输速度   酷盘不限制文件的上传下载速度,保证可以有最快的传输速度,节省宝贵的时间。实际的上传下载速度主要取决于带宽,目前国内的ADSL宽带多数上传带宽小于下载带宽,实际上传速度只能达到50KB/s左右,具体可以咨询宽带运营商。

经验教程

519

收藏

32
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部