//我都没试过,希望有用 :)
//Server Code
using System;
using System.Net.Sockets;
using System.IO ; 
public class Echoserver
{
        //entry point of main method....
        public static void Main()
        {
                //TcpListener is listening on the given port...                                                 {
                TcpListener tcpListener = new TcpListener(1234);
        tcpListener.Start();     
                Console.WriteLine("Server Started") ;                  
                //Accepts a new connection...
                Socket socketForClient = tcpListener.AcceptSocket();                   
        //StreamWriter and StreamReader Classes for reading and writing the data to and fro.
        //The server reads the meassage sent by the Client ,converts it to upper case and sends it back to the client.
        //Lastly close all the streams.
        try
        {
                if (socketForClient.Connected)
                {
                        while(true)
                        {
                        Console.WriteLine("Client connected");
                                NetworkStream networkStream = new NetworkStream(socketForClient);
                StreamWriter streamWriter = new StreamWriter(networkStream);
                                StreamReader streamReader = new StreamReader(networkStream);
                        string line = streamReader.ReadLine();
                        Console.WriteLine("Read:" +line);
                                line=line.ToUpper()+ "!";
                                streamWriter.WriteLine(line);
                                Console.WriteLine("Wrote:"+line);
                        streamWriter.Flush() ;                         
                                 }
                }
                        socketForClient.Close();               
                Console.WriteLine("Exiting...");
        }
        catch(Exception e)
        {
                Console.WriteLine(e.ToString()) ;
        }
        }
}//Client Code
using System;
using System.Net.Sockets;
using System.Windows.Forms;
using System.IO ;
using System.ComponentModel ;
using System.Drawing;
public class Echoclient: Form
{
  //Define the components...
  private Button b1;
  private TextBox t1,ta;
  TcpClient myclient;
  private NetworkStream networkStream ;
  private StreamReader streamReader ;
  private StreamWriter streamWriter ;
       
  //constructor initialising...
  public Echoclient()
  {
    InitializeComponent();
  }
  //main method...
  public static void Main()
  {
    Echoclient df=new Echoclient();
    df.FormBorderStyle=FormBorderStyle.Fixed3D;
    Application.Run(df);
  }
  public void InitializeComponent()
  {
    b1=new Button();
    b1.Location = new System.Drawing.Point(170,20);
    b1.Size = new System.Drawing.Size (80,40);
    b1.Text="Click Here";
    b1.Click += new System.EventHandler(b1_Click);
        b1.BackColor = System.Drawing.Color.Transparent ;
        b1.ForeColor = System.Drawing.Color.Red ;
        b1.BackgroundImage = Image.FromFile("back4.gif") ;
        b1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
    b1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8f, System.Drawing.FontStyle.Bold);     
  
    t1=new TextBox();
    t1.Location = new System.Drawing.Point(20,20);
    t1.Size = new System.Drawing.Size (100,100);
  
    ta=new TextBox();
        ta.Multiline=true;
        ta.ScrollBars = ScrollBars.Vertical;
    ta.AcceptsReturn = true;
    ta.AcceptsTab = true;
    ta.WordWrap = true;
        ta.Location = new System.Drawing.Point(20,80);
    this.SuspendLayout();
        this.Text = "Socket Programming" ;
        this.MaximizeBox = false;
        this.BackgroundImage = Image.FromFile("back3.gif") ;
    this.Name = "Form1";
    this.Controls.Add(this.b1);
    this.Controls.Add(this.t1);
    this.Controls.Add(this.ta);
        this.Closing+= new CancelEventHandler(form1_closing) ;
        //connect to the "localhost" at the give port
        //if you have some other server name then you can use that instead of "localhost"
        try
                 {
                 myclient = new TcpClient("localhost", 1234);
         }
    catch
         {
                 Console.WriteLine("Failed to connect to server at {0}:999", "localhost");
                 return;
         }
                 //get a Network stream from the server
         networkStream = myclient.GetStream();
                 streamReader = new StreamReader(networkStream);
         streamWriter = new StreamWriter(networkStream);
  }
  //User can enter a text in the textbox and on click of the button the message will be sent to the server..
  //then the Client waits and receives the response from the server which is displayed in the textarea..
  private void b1_Click(object sender, EventArgs e)
  {
        ta.Text="" ;
        if(t1.Text=="")
                {
                        MessageBox.Show("Please enter something in the textbox");
                        t1.Focus();
                        return ;
                }
            try
                         {
                        string s;
                        streamWriter.WriteLine(t1.Text);
                                Console.WriteLine("Sending Message");
                        streamWriter.Flush();
                                s= streamReader.ReadLine();
                                Console.WriteLine("Reading Message") ;
                                Console.WriteLine(s) ;
                                ta.Text=s;
                               
                  }
         catch(Exception ee)
                  {
                        Console.WriteLine("Exception reading from Server:"+ee   .ToString());
                  }            }
        public void form1_closing(object o , CancelEventArgs ec)
        {
                        //close all streams...
                                streamReader.Close() ;
                                streamWriter.Close() ;
                        networkStream.Close();
        }