HostIP = IPAddress.Parse("127.0.0.1");
            try
            {
                ChatServer = new IPEndPoint(HostIP, Int32.Parse("8089"));
                ChatSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             
                ChatSocket.Bind(ChatServer);
                ChatSocket.Listen(50);
                this.label3.Text = "Listening";
                AcceptedSocket = ChatSocket.Accept();
                Thread thread = new Thread(new ThreadStart(ChatProcess));
                thread.Start();
                MessageBox.Show("Success!");
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.ToString());
            }

解决方案 »

  1.   

    这段代码是放在一个按钮事件里的
    当我点击按钮,结果就死了
    然后我debug一下:发现错误在这一行:
    AcceptedSocket = ChatSocket.Accept();这行有错么?
    我是这样定义的:
        private Socket AcceptedSocket;另外还有一个方法:  private void ChatProcess()
            {
                if (AcceptedSocket.Connected)
                {
                    this.label3.Text = "Ready to chatting!";
                    while (flag)
                    {
                        Byte[] ReceivedByte = new Byte[64];
                        AcceptedSocket.Receive(ReceivedByte, ReceivedByte.Length, 0);
                        string ReceiveStr = System.Text.Encoding.BigEndianUnicode.GetString(ReceivedByte);
                        this.textBox1.AppendText(ReceiveStr+"\r\n");
                        //Byte[] SentByte = new byte[64];
                        //string SentStr = ReceiveStr;
                        //SentByte = System.Text.Encoding.BigEndianUnicode.GetBytes(SentStr.ToCharArray());
                        //AcceptedSocket.Send(SentByte, SentByte.Length, 0);
                    }
                }
                else
                    MessageBox.Show("The connection has not existed!");
            }
      

  2.   

    你指的死了因该是程序界面死了吧
    这个时候你用客户端去连接因该还能够正确连接的
    因为这里你没加入线程处理 Accept把主线程全占了界面就不重绘了