@Override
 public void run() {
   while (isContinueListen) {
     DatagramPacket udpPacket = null;
     try {
       Logg.i(TAG, "准备从LPP列表中取出一个UDP数据报");
       udpPacket = LPP.take();
       Logg.i(TAG, "从LPP列表中取出了一个UDP数据报");
     } catch (InterruptedException e) {
       e.printStackTrace();
       Logg.e(TAG, "run error");
       continue;
     }
     boolean isScreenLocked = ((ClassWorkActivity) mContext).isScreenLocked();
     if (!isScreenLocked) continue;
     int packetLen = udpPacket.getLength();
     byte[] packetData = udpPacket.getData();
     int operationType = myConvertByteArrToInt_bigend(packetData, 0);
     System.out.println("操作类型为" + operationType);
     // handDraw(packetData);
     switch (operationType) {
       case OPERATION_TYPE_HANDDRAW:
         handDraw(packetData);
         break;
       case OPERATION_TYPE_ERASE:
         eraseArea(packetData);
         break;
       case OPERATION_TYPE_LINE:
         drawLine(packetData);
         break;
       case OPERATION_TYPE_RECTANGLE:
         drawRectangle(packetData);
         break;
       case OPERATION_TYPE_ELLIPSE:
         drawEllipse(packetData);
         break;
       case OPERATION_TYPE_TEXT:
         drawText(packetData);
         break;
       case OPERATION_TYPE_PAGE:
         changePage(packetData);
         clearCanvas();
         break;
       case OPERATION_TYPE_CLEARCANVAS:
         clearCanvas();
         break;
       case OPERATION_TYPE_UNDO:
         undo();
         break;
       case OPERATION_TYPE_REDO:
         redo();
         break;
       case OPERATION_TYPE_MOVECANVAS:
         moveCanvas(packetData);
         break;
     }
   } // end of while
 } // end of run