窗口中有两个控件,一个richTextBox名字为rtxt_main,另外一个为一个按钮(Button)名字为button01,程序启动后点击按钮将启动一个线程,在线程中使用委托技术更新richTextBox的文字,关键代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public int port = 8192;
public Form1()
{
InitializeComponent();
}
public delegate void delegateHandler(String str); //定义一个委托
{
public partial class Form1 : Form
{
public int port = 8192;
public Form1()
{
InitializeComponent();
}
public delegate void delegateHandler(String str); //定义一个委托
private void Form1_Load(object sender, EventArgs e)
{
this.rtxt_main.AppendText("Server is start...\n");
}
{
this.rtxt_main.AppendText("Server is start...\n");
}
private void setShow(String strTemp) {
if (this.InvokeRequired)
{
delegateHandler delegateSetText = new delegateHandler(setShow); //声明回调函数对象
this.Invoke(delegateSetText, new object[] { strTemp }); //调用自己
}
else {
this.rtxt_main.AppendText(strTemp); //内部调用
}
}
if (this.InvokeRequired)
{
delegateHandler delegateSetText = new delegateHandler(setShow); //声明回调函数对象
this.Invoke(delegateSetText, new object[] { strTemp }); //调用自己
}
else {
this.rtxt_main.AppendText(strTemp); //内部调用
}
}
private void TcpServer() {
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
setShow("Server running...\n");
while (true)
{
const int bufferSize = 8155;
TcpClient client = listener.AcceptTcpClient();
NetworkStream clientStream = client.GetStream();
byte[] buffer = new byte[bufferSize];
int readcount = 0;
readcount = clientStream.Read(buffer, 0, bufferSize);
String result = Encoding.UTF8.GetString(buffer).Substring(0, readcount);
setShow(result);
clientStream.Close();
}
}
private void button1_Click(object sender, EventArgs e)
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
setShow("Server running...\n");
while (true)
{
const int bufferSize = 8155;
TcpClient client = listener.AcceptTcpClient();
NetworkStream clientStream = client.GetStream();
byte[] buffer = new byte[bufferSize];
int readcount = 0;
readcount = clientStream.Read(buffer, 0, bufferSize);
String result = Encoding.UTF8.GetString(buffer).Substring(0, readcount);
setShow(result);
clientStream.Close();
}
}
{
Thread t = new Thread(TcpServer);
t.Start();
}
}
}
运行效果如下:程序为一个TCP客户端程序,TCP部分还未验证,有待核实更新。。。