Socket,同一个IP,对server发起多个连接,怎么判断哪一个连接断开的有关问题

Socket,同一个IP,对server发起多个连接,如何判断哪一个连接断开的问题
server端的主要代码:

private bool m = false, v = false;
    private int cmdConn = 0;
    private void tcpCMD ()
      {
      serverCMD = new Socket ( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
      IPEndPoint localEP = new IPEndPoint ( ip, portCMD );
      serverCMD.Bind ( localEP );
      while ( true )
        {
        serverCMD.Listen ( 65535 );
        Socket client = serverCMD.Accept ();
        Thread clientThread = new Thread ( new ParameterizedThreadStart ( clientCMD ) );
        clientThread.IsBackground = true;
        clientThread.Start ( client );
        BeginInvoke ( ( ThreadStart ) delegate
        {
        cmdConn++;
        tCMDS.Text = ( cmdConn ).ToString ();// tCMDS是一个问题本框
        } );
        if ( !m )
          {
          m = true;
        BeginInvoke ( ( ThreadStart ) delegate
        {
          lCMD.Items.Add ( "m" );
        } );
          }
        else
          {
          v = true;
          BeginInvoke ( ( ThreadStart ) delegate
          {
            lCMD.Items.Add ( "v" );
          } );
          }
        }
      }

    private void clientCMD ( object obj )
      {
      Socket client = ( Socket ) obj;
      IPEndPoint remoEP = ( IPEndPoint ) client.RemoteEndPoint;
      byte[] buffer;
      int re;
      string str;
      try
        {
        while ( client.Connected )
          {
          buffer = new byte[4096];
          re = client.Receive ( buffer );
          if ( re == 0 )//无数据
            {
            continue;
            }
          str = Encoding.UTF8.GetString ( buffer, 0, re );
          BeginInvoke ( ( ThreadStart ) delegate
          {
          tCMDR.Text += str + "\r\n";
          } );
          client.Send ( Encoding.UTF8.GetBytes ( "get it" ));
          }
        }
      catch
        {
        if ( v )
          {
          v = false;
          MessageBox.Show ( "v" );
          BeginInvoke ( ( ThreadStart ) delegate
          {