VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • c#实现利用socket传输简单数据

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  运行程序后, 先要点击开始接收按钮后才能点击发送数据

  Form1.cs代码如下

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.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 = true;
      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(object sender, DoWorkEventArgs e)
    ...{
      Socket receiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      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="disposing">如果应释放托管资源,为 true;否则为 false。</param>
    protected override void Dispose(bool disposing)
    ...{
      if (disposing && (components != null))
      ...{
        components.Dispose();
      }
      base.Dispose(disposing);
    }

 

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

    /**//// <summary>
    /// 设计器支持所需的方法 - 不要
    /// 使用代码编辑器修改此方法的内容。
    /// </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;
  }
}

 

 

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



相关教程