C#实现Socket传输简单数据

 

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

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(08000);

            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 窗体设计器生成的代码

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值