浏览主站 | 站长合租 | 新闻资讯 | 站长学院 | 站长盈利 | HTML教程 | 网址导航 | 站长周刊 | 会员投稿 | 滚动新闻 | RSS
发新话题
打印

C#实现Socket传输简单数据

C#实现Socket传输简单数据

[[wiki]wiki[/wiki]][/wiki]运行[wiki]程序[/wiki]后, 先要点击开始接收按钮后才能点击发送数据
Form1.cs代码如下

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.[wiki]windows[/wiki].Forms;using System.Net.Sockets;using System.IO;using System.Net;

namespace WinSocket...{    public partial class Form1 : Form    ...{        BackgroundWorker bgWorker = null;        public Form1()        ...{            InitializeComponent();            bgWorker = new BackgroundWorker();            bgWorker.WorkerSupportsCancellation = tr[wiki]UE[/wiki];            this.AddEvent();        }

        /**//// <summary>        /// 注册事件        /// </summary>        private void AddEvent()        ...{            this.bgWorker.DoWork  = new DoWorkEventHandler(bgWorker_DoWork);            this.btnSend.Click  = new EventHandler(btnSend_Click);            this.btnStartReceive.Click  = new EventHandler(btnStartReceive_Click);            this.btnStopRecevie.Click  = new EventHandler(btnStopRecevie_Click);        }

        void bgWorker_DoWork([wiki]object[/wiki] sender, DoWorkEventArgs e)        ...{            Socket receiveSocket = new Socket(AddressFamily.InterNetwork, Socket[wiki]type[/wiki].Stream, ProtocolType.[wiki]TCP[/wiki]);            IPEndPoint endpoint = new IPEndPoint(0, 8000);

            receiveSocket.Bind(endpoint);            receiveSocket.Listen(10);

                       try            ...{                while (true)                ...{                    Socket tmpSocket = receiveSocket.Accept();                    byte[] buffer = new byte[tmpSocket.ReceiveBufferSize];                    if (tmpSocket.Receive(buffer) > 0)                    ...{                        textBox2.Text  = Encoding.UTF8.GetString(buffer)   Environment.NewLine;                                          }                    else                    ...{                        System.Threading.Thread.Sleep(1000);                    }

                }            }            catch(Exception err)            ...{                MessageBox.Show(err.Message);            }        }

        void btnStopRecevie_Click(object sender, EventArgs e)        ...{            if (this.bgWorker.IsBusy)            ...{                this.bgWorker.CancelAsync();                this.btnStartReceive.Enabled = true;                this.btnStopRecevie.Enabled = false;            }                   }

        void btnStartReceive_Click(object sender, EventArgs e)        ...{            this.btnStartReceive.Enabled = false;            this.bgWorker.RunWorkerAsync();            this.btnStopRecevie.Enabled = true;        }

        void btnSend_Click(object sender, EventArgs e)        ...{            Socket sendSocket = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            sendSocket.Connect("187.186.0.63", 8000);

            byte[] buffer = Encoding.UTF8.GetBytes(textBox1.Text);                                    sendSocket.Send(buffer);                       sendSocket.Shutdown(SocketShutdown.Both);            sendSocket.Close();        }

        private void Form1_Load(object sender, EventArgs e)        ...{            this.btnStartReceive.Enabled = true;            this.btnStopRecevie.Enabled = false;                    }    }}Form.Designer.cs代码如下



namespace WinSocket...{    partial class Form1    ...{        /**//// <summary>        /// 必需的设计器变量。        /// </summary>        private System.ComponentModel.IContainer components = null;

        /**//// <summary>        /// 清理所有正在使用的资源。        /// </summary>        /// <param name="dis[wiki]POS[/wiki]ing">如果应释放托管资源,为 true;否则为 false。</param>        protected override void Dispose(bool disposing)        ...{            if (disposing && (components != null))            ...{                components.Dispose();            }            base.Dispose(disposing);        }

        Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码

        /**//// <summary>        /// 设计器支持所需的方法 - 不要        /// 使用代码[wiki]编辑[/wiki]器修改此方法的内容。        /// </summary>        private void InitializeComponent()        ...{            this.btnSend = new System.Windows.Forms.Button();            this.textBox1 = new System.Windows.Forms.TextBox();            this.textBox2 = new System.Windows.Forms.TextBox();            this.btnStartReceive = new System.Windows.Forms.Button();            this.btnStopRecevie = new System.Windows.Forms.Button();            this.SuspendLayout();            //             // btnSend            //             this.btnSend.Location = new System.Drawing.Point(164, 35);            this.btnSend.Name = "btnSend";            this.btnSend.Size = new System.Drawing.Size(75, 23);            this.btnSend.TabIndex = 0;            this.btnSend.Text = "发送";            this.btnSend.UseVisualStyleBackColor = true;            //             // textBox1            //             this.textBox1.Location = new System.Drawing.Point(24, 37);            this.textBox1.Name = "textBox1";            this.textBox1.Size = new System.Drawing.Size(100, 21);            this.textBox1.TabIndex = 1;            //             // textBox2            //             this.textBox2.Location = new System.Drawing.Point(24, 123);            this.textBox2.Multiline = true;            this.textBox2.Name = "textBox2";            this.textBox2.Size = new System.Drawing.Size(234, 131);            this.textBox2.TabIndex = 2;                       //             // btnStartReceive            //             this.btnStartReceive.Location = new System.Drawing.Point(24, 84);            this.btnStartReceive.Name = "btnStartReceive";            this.btnStartReceive.Size = new System.Drawing.Size(75, 23);            this.btnStartReceive.TabIndex = 3;            this.btnStartReceive.Text = "开始接收";            this.btnStartReceive.UseVisualStyleBackColor = true;            //             // btnStopRecevie            //             this.btnStopRecevie.Location = new System.Drawing.Point(164, 84);            this.btnStopRecevie.Name = "btnStopRecevie";            this.btnStopRecevie.Size = new System.Drawing.Size(75, 23);            this.btnStopRecevie.TabIndex = 4;            this.btnStopRecevie.Text = "停止接收";            this.btnStopRecevie.UseVisualStyleBackColor = true;            //             // Form1            //             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;            this.ClientSize = new System.Drawing.Size(292, 266);            this.Controls.Add(this.btnStopRecevie);            this.Controls.Add(this.btnStartReceive);            this.Controls.Add(this.textBox2);            this.Controls.Add(this.textBox1);            this.Controls.Add(this.btnSend);            this.Name = "Form1";            this.Text = "Form1";            this.Load  = new System.EventHandler(this.Form1_Load);            this.ResumeLayout(false);            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Button btnSend;        private System.Windows.Forms.TextBox textBox1;        private System.Windows.Forms.TextBox textBox2;        private System.Windows.Forms.Button btnStartReceive;        private System.Windows.Forms.Button btnStopRecevie;    }}

TOP

发新话题