socket 异步通信问题,请教!每次发送消息前都要进行重新连接
服务器端代码:
      ///监听
      private void listen()
         {
             // Data buffer for incoming data.  
             byte[] bytes = new Byte[2048];
             // Create a TCP/IP socket.  
             listener = new Socket(AddressFamily.InterNetwork,
            SocketType.Stream, ProtocolType.Tcp);
             // Bind the socket to the local endpoint and listen for incoming connections.  
             try
             {
                 listener.Bind(localIpe);
                 listener.Listen(100);
                 Thread _acceptWorkThread = new Thread(AcceptWorkThread);
                 _acceptWorkThread.Start();                 
             }
             catch (Exception e)
             {
                 Console.WriteLine(e.ToString());
             }
         }            
          private void AcceptWorkThread()
           {
               while (true)
                 {
                     //allDone.Reset();
                    Socket socket= listener.Accept();                    
                     // Wait until a connection is made before continuing.                        
                     // Create the state object.  
                     StateObject state = new StateObject();
                     state.workSocket = socket;
                     socket.BeginReceive(state.buffer, 0, StateObject.BufferSize, SocketFlags.None,
                     ReadCallback, state);
                 }
          }          
         /// <summary>
         /// 异步处理函数
         /// </summary>
         /// <param name="ar"></param>
         public void ReadCallback(IAsyncResult ar)
         {
             String content = String.Empty;
             // Retrieve the state object and the handler socket  
             // from the asynchronous state object.  
             StateObject state = (StateObject)ar.AsyncState;
             Socket handler = state.workSocket;
             // Read data from the client socket.   
             int bytesRead = handler.EndReceive(ar);
             if (bytesRead > 0)
             {
                 // There  might be more data, so store the data received so far.  
                 state.sb.Append(Encoding.ASCII.GetString(
                 state.buffer, 0, bytesRead));
                 // Check for end-of-file tag. If it is not there, read   
                 // more data.  
                 content = state.sb.ToString();
                 //检查报文长度
                 if (content.Length > 0)
                 {
                     MessageBox.Show("收到消息:"+content);
                     //this.textBox1.Text += content;
                 }
                 else
                 {
                     // Not all data received. Get more.  
                     handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                     new AsyncCallback(ReadCallback), state);
                 }
             }
         }          
客户端处理函数,连接服务器,向服务器发送报文,每次发送完报文后,必须重新连接,才能发送报文:
    /// <summary>
 &nb