Socket基本编程

服务端:

using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

Thread mythread;
Socket socket;

// 清理所有正在使用的资源。
protected override void Dispose(bool disposing)
{
    try
    {
        socket.Close();//释放资源
        mythread.Abort();//中止线程
    }
    catch { }

    if (disposing)
    {
        if (components != null)
        {
            components.Dispose();
        }
    }
    base.Dispose(disposing);
}

public static IPAddress GetServerIP()
{
    IPHostEntry ieh = Dns.GetHostByName(Dns.GetHostName());
    return ieh.AddressList[0];
}

private void BeginListen()
{
    IPAddress ServerIp = GetServerIP();
    IPEndPoint iep = new IPEndPoint(ServerIp, 8000);
    socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    byte[] byteMessage = new byte[100];
    this.label1.Text = iep.ToString();
    socket.Bind(iep);
    // do
    while (true)
    {
        try
        {
            socket.Listen(5);
            Socket newSocket = socket.Accept();
            newSocket.Receive(byteMessage);

            string sTime = DateTime.Now.ToShortTimeString();
            string msg = sTime + ":" + "Message from:";
            msg += newSocket.RemoteEndPoint.ToString() + Encoding.Default.GetString(byteMessage);
            this.listBox1.Items.Add(msg);
        }
        catch (SocketException ex)
        {
            this.label1.Text += ex.ToString();
        }
    }
    // while(byteMessage!=null);
}

//开始监听
private void button1_Click(object sender, System.EventArgs e)
{
    try
    {
        mythread = new Thread(new ThreadStart(BeginListen));
        mythread.Start();
    }
    catch (System.Exception er)
    {
        MessageBox.Show(er.Message, "完成", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    }
}

客户端:

using System.Net;
using System.Net.Sockets;
using System.Text;

private void button1_Click(object sender, System.EventArgs e)
{
    BeginSend();
}

private void BeginSend()
{
    string ip = this.txtip.Text;
    string port = this.txtport.Text;

    IPAddress serverIp = IPAddress.Parse(ip);
    int serverPort = Convert.ToInt32(port);
    IPEndPoint iep = new IPEndPoint(serverIp, serverPort);
    byte[] byteMessage;
    //            do
    //            {
    Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    socket.Connect(iep);

    byteMessage = Encoding.ASCII.GetBytes(textBox1.Text);
    socket.Send(byteMessage);
    socket.Shutdown(SocketShutdown.Both);
    socket.Close();
    //            }
    //            while(byteMessage!=null);
}
Contributors: FHL