socket

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            TextBox.CheckForIllegalCrossThreadCalls = false;
        }
        //负责监听端口
        Socket sokWelcome = null;
        //负责和客户端socket通信
        Socket sokConnection = null;
        //负责监听的线程
        Thread threadWatchPort = null;

        
        public void StartListening()
        {
            try
            {
                IPAddress address = IPAddress.Parse(txtIP.Text.Trim());
                IPEndPoint endpoint = new IPEndPoint(address, int.Parse(txtProt.Text.Trim()));
                sokWelcome = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                sokWelcome.Bind(endpoint);
                sokWelcome.Listen(10);
                threadWatchPort = new Thread(WatchPort);
                threadWatchPort.Start();
                ShowMsg("开始监听....");
            }
            catch (Exception ex)
            {

                ShowErr("", ex);
            }
            
        }
        public void WatchPort()
        {
            while (true)
            {
                try
                {
                    sokConnection = sokWelcome.Accept();
                    ShowMsg("监听到链接啦...");
                }
                catch (Exception ex)
                {

                    ShowErr("", ex);
                }
            }
        }
        public void ShowErr(string msg, Exception ex)
        {
            ShowMsg("---------------begin---------------------");
            ShowMsg(msg + "" + ex.Message);
            ShowMsg("---------------end-----------------------");
 
        }
        public void ShowMsg(string msg)
        {
            txtShow.AppendText(msg + "\r\n");
        }
        private void btnListen_Click(object sender, EventArgs e)
        {
            StartListening();
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            string strMsg = txtInput.Text.Trim();
            byte[] byteMsg = Encoding.UTF8.GetBytes(strMsg);
            sokConnection.Send(byteMsg, byteMsg.Length, SocketFlags.None);

        }
    }

 

 

posted @ 2013-12-25 18:44  南瓜asp  阅读(151)  评论(0编辑  收藏  举报