专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » socket传输文件:C#实现Socket传输简单数据 »正文

socket传输文件:C#实现Socket传输简单数据

来源: 发布时间:星期五, 2009年1月9日 浏览:90次 评论:0
  运行 先要点击开始接收按钮后才能点击发送数据

  Form1.cs代码如下

using ;
using .Collections.Generic;
using .ComponentModel;
using .Data;
using .Drawing;
using .Text;
using .Windows.Forms;
using .Net.Sockets;
using .IO;
using .Net;


WinSocket
...{
  public partial Form1 : Form
  ...{
    BackgroundWorker bgWorker = null;
    public Form1
    ...{
      InitializeComponent;
      bgWorker = BackgroundWorker;
      bgWorker.WorkerSupportsCancellation = true;
      this.AddEvent;
    }


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


    void bgWorker_DoWork(object sender, DoWorkEventArgs e)
    ...{
      Socket receiveSocket = Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      IPEndPo endpo = IPEndPo(0, 8000);


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


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


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


    void btnStopRecevie_Click(object sender, EventArgs e)
    ...{
       (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 = Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      sendSocket.Connect("187.186.0.63", 8000);


       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代码如下

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


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


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

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




    }

    #endregion

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




0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: