手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

c#实现socket传输简单数据_c#应用

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

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

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

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!