Server:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Text;
using System.IO;
namespace TestTcpCoding
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Server : System.Windows.Forms.Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Server()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null) 
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.txtMessage = new System.Windows.Forms.TextBox();
this.txtResult = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
// 
// txtMessage
// 
this.txtMessage.Location = new System.Drawing.Point(24, 264);
this.txtMessage.Multiline = true;
this.txtMessage.Name = "txtMessage";
this.txtMessage.Size = new System.Drawing.Size(416, 104);
this.txtMessage.TabIndex = 0;
this.txtMessage.Text = "textBox1";
// 
// txtResult
// 
this.txtResult.Location = new System.Drawing.Point(24, 8);
this.txtResult.Multiline = true;
this.txtResult.Name = "txtResult";
this.txtResult.ReadOnly = true;
this.txtResult.Size = new System.Drawing.Size(416, 232);
this.txtResult.TabIndex = 1;
this.txtResult.Text = "textBox2";
// 
// button1
// 
this.button1.Location = new System.Drawing.Point(456, 288);
this.button1.Name = "button1";
this.button1.TabIndex = 2;
this.button1.Text = "发送";
this.button1.Click += new System.EventHandler(this.button1_Click);
// 
// Server
// 
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(576, 389);
this.Controls.Add(this.button1);
this.Controls.Add(this.txtResult);
this.Controls.Add(this.txtMessage);
this.Name = "Server";
this.Text = "Server";
this.Load += new System.EventHandler(this.Server_Load);
this.ResumeLayout(false); }
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main() 
{
Application.Run(new Server());
} private TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"),4567);
private TcpClient client = null;
private StreamWriter writer = null;
private StreamReader reader = null;
private NetworkStream networkStream = null;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox txtMessage;
private System.Windows.Forms.TextBox txtResult;
private void ServerProcess()
{
while(client == null)
{
listener.Start();
client = listener.AcceptTcpClient();
networkStream = client.GetStream();
writer = new StreamWriter(networkStream);
reader = new StreamReader(networkStream);
button1.Enabled = true;
Thread myServerShowResult = new Thread(new ThreadStart(ServerShowResult));
myServerShowResult.Start();
}
}
private void ServerShowResult()
{
while(reader != null)
{
if (networkStream.CanRead)
{
string Result = reader.ReadLine();
txtResult.Text += "\r\n" + Result;
networkStream.Flush();
}
}
}
private void Server_Load(object sender, System.EventArgs e)
{
button1.Enabled = false;

Thread myServerThread = new Thread(new ThreadStart(ServerProcess));
myServerThread.Start();

} private void button1_Click(object sender, System.EventArgs e)
{
string message = "Server:"+txtMessage.Text;
writer.Write(message);
networkStream.Flush();
} }
}