asp.net c# Design Pattern WebService Windows Report Control Mobile Symbin Windows Phone 7 Visual Studio 2011

C#实现Socket传输简单数据

Posted on 2007-03-20 16:14  笑缘  阅读(5860)  评论(7编辑  收藏  举报

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

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

}


Copyright © 2024 笑缘
Powered by .NET 9.0 on Kubernetes

asp.net c# Design Pattern WebService Windows Report Control Mobile Windows Phone Visual Studio
asp.net c# Design Pattern WebService Windows Report Control Mobile