[引]VS帮助文档的 socket连接的Listen和Connect 及 Tcp连接的TcpListener和TcpClient

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;

//socket listen
private void btn_startlisten_Click(object sender, EventArgs e)
{
    try
    {
        // create the socket
        Socket listenSocket = new Socket(AddressFamily.InterNetwork,
                                         SocketType.Stream,
                                         ProtocolType.Tcp);
        // bind the listening socket to the port           
        IPAddress hostIP = IPAddress.Parse("127.0.0.1");
        int port = 4567;
        //IPAddress hostIP = (Dns.Resolve(IPAddress.Any.ToString())).AddressList[0];           
        IPEndPoint ep = new IPEndPoint(hostIP, port);
        listenSocket.Bind(ep);

        // start listening
        int backlog = 0;
        listenSocket.Listen(backlog);

        while (true)
        {
            if (listenSocket.Poll(-1, SelectMode.SelectRead))
            {
                Socket mySocket = listenSocket.Accept();

                byte[] bytes = new byte[256];
                mySocket.Receive(bytes);
                this.txt_Msg.Text += string.Format(Encoding.UTF8.GetString(bytes) + "\r\n");
                //MessageBox.Show(Encoding.UTF8.GetString(bytes));

                byte[] msg = Encoding.UTF8.GetBytes("This is a test S->C" + DateTime.Now.ToString());
                mySocket.Send(msg);

                mySocket.Shutdown(SocketShutdown.Both);
                mySocket.Close();
            }
        }
        //listenSocket.Close();
    }
    catch (Exception ex)
    {
        this.txt_Msg.Text = ex.ToString();
    }
}

//socket client
private void button1_Click(object sender, EventArgs e)
{
    try
    {
        byte[] msg = Encoding.UTF8.GetBytes("This is a test C->S"+DateTime.Now.ToString());
        byte[] bytes = new byte[256];

        Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        s.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4567));
        // Blocks until send returns.
        int i = s.Send(msg);
        this.textBox1.Text = string.Format("Sent {0} bytes.", i);

        // Get reply from the server.
        i = s.Receive(bytes);
        this.textBox1.Text = string.Format(Encoding.UTF8.GetString(bytes));

        //释放资源
        s.Close();
    }
    catch (Exception ex)
    {
        this.textBox1.Text = ex.ToString();
    }
}

 

//TcpListener
private void button1_Click(object sender, EventArgs e)
        {
            TcpListener server = null;
            try
            {
                // Set the TcpListener on port 13000.
                Int32 port = 13000;
                IPAddress localAddr = IPAddress.Parse("127.0.0.1");

                // TcpListener server = new TcpListener(port);
                server = new TcpListener(localAddr, port);

                // Start listening for client requests.
                server.Start();

                // Buffer for reading data
                Byte[] bytes = new Byte[256];
                String data = null;
               
                int j = 0;//
                // Enter the listening loop.
                while (j<2)//true
                {
                    j = j + 1;
                    // Perform a blocking call to accept requests.
                    // You could also user server.AcceptSocket() here.
                    TcpClient client = server.AcceptTcpClient();

                    data = null;

                    // Get a stream object for reading and writing
                    NetworkStream stream = client.GetStream();

                    int i;

                    // Loop to receive all the data sent by the client.
                    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        // Translate data bytes to a ASCII string.
                        data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                        this.textBox1.Text += DateTime.Now.ToString() + " Received: " + data+"\r\n";

                        // Process the data sent by the client.
                        data = data.ToUpper() + DateTime.Now.ToString();                     

                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

                        // Send back a response.
                        stream.Write(msg, 0, msg.Length);
                        this.textBox1.Text += " Sent back: " + data + "\r\n";
                    }

                    // Shutdown and end connection
                    client.Close();
                }
               
            }
            catch (SocketException ex)
            {
                this.textBox1.Text = ex.ToString();
            }
            finally
            {
                // Stop listening for new clients.
                server.Stop();
            }

        }

//TcpClient
private void button1_Click(object sender, EventArgs e)
{
    try
    {
      
        // Create a TcpClient.
        // Note, for this client to work you need to have a TcpServer
        // connected to the same address as specified by the server, port
        // combination.
        string server = "127.0.0.1";
        Int32 port = 13000;
        TcpClient client = new TcpClient(server, port);

        string message = " test data c->s ";
        // Translate the passed message into ASCII and store it as a Byte array.
        Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);

        // Get a client stream for reading and writing.
        //  Stream stream = client.GetStream();

        NetworkStream stream = client.GetStream();

        // Send the message to the connected TcpServer.
        stream.Write(data, 0, data.Length);

        this.textBox1.Text += DateTime.Now.ToString() + "Sent:" + message + "\r\n";

        // Receive the TcpServer.response.

        // Buffer to store the response bytes.
        data = new Byte[256];

        // String to store the response ASCII representation.
        String responseData = String.Empty;

        // Read the first batch of the TcpServer response bytes.
        Int32 bytes = stream.Read(data, 0, data.Length);
        responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
        this.textBox1.Text += DateTime.Now.ToString() + "Received:" + responseData + "\r\n";
        // Close everything.
        stream.Close();
        client.Close();
    }
    catch (ArgumentNullException ex)
    {
        this.textBox1.Text = ex.ToString();
    }
    catch (SocketException ex)
    {
        this.textBox1.Text = ex.ToString();
    }
}

posted on 2008-08-29 12:30  freeliver54  阅读(1955)  评论(3编辑  收藏  举报

导航