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;
using System.Net.Sockets;
using System.Threading;namespace server
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Socket sockets = null;
        Thread thread = null;        private void button1_Click(object sender, EventArgs e)
        {
           
            thread = new Thread(new ThreadStart(ThreadCallBack));
            thread.Start();
        }        private void ThreadCallBack()
        {
            //int address = Convert.ToInt32(this.textBox2.Text);
            int port = Convert.ToInt32(this.textBox3.Text);
            sockets = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress hostIP = IPAddress.Parse(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString());
            IPEndPoint ep = new IPEndPoint(hostIP, port);            sockets.Bind(ep);
            sockets.Listen(10);            textBox1.BeginInvoke(new MethodInvoker(delegate
            {
                textBox1.Text += "侦听启动\r\n";
            }));            while (thread.ThreadState != ThreadState.Aborted)//
            {
                Socket sReceive = sockets.Accept();
                int bufLen = sReceive.ReceiveBufferSize;
                if (bufLen == 0) continue;
                byte[] bData = new byte[bufLen];
                int DataLen = sReceive.Receive(bData);
                if (DataLen == 0) continue;
                //string StrData = Encoding.Default.GetString(bData, 0, DataLen);
                string StrData = "";
                for (int i = 0; i < DataLen; i++)
                {
                    StrData = StrData + Convert.ToString(bData[i], 16).PadLeft(2, '0') + " ";
                }
                textBox1.BeginInvoke(new MethodInvoker(delegate
                {
                    textBox1.Text += ((IPEndPoint)sReceive.RemoteEndPoint).Address.ToString() + " :" + ((IPEndPoint)sReceive.RemoteEndPoint).Port.ToString()  + "  " + DateTime.Now.ToString() + "   ||  " + StrData + "\r\n";
                }));
            }
            sockets.Close();
            sockets = null;
        }        private void button2_Click(object sender, EventArgs e)
        {
            if (thread != null)
            {
                thread.Abort();
                Thread.Sleep(30);
                thread = null;
            }            if (sockets != null)
            {
                sockets.Close();
                sockets = null;
            }            textBox1.Text += "侦听停止\r\n";
        }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            button2_Click(null, null);
        }
    }
}