亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

J2ME:MIDP開發(fā)Socket程序

系統(tǒng) 2705 0

Socket程序知識點:

Socket程序并不是MIDP2.0中要求移動設(shè)備廠商必須支持的協(xié)議。是一種典型的“請求--應(yīng)答”模式。

1

程序需求:

如上圖,先運(yùn)行服務(wù)器端程序,然后再運(yùn)行客戶端的程序,可以通過的屏幕上編輯信息然后發(fā)送出來,隨后在兩個程序的屏幕上都會顯示接收到的信息。當(dāng)客戶端的程序運(yùn)行以后,將自動申請連接服務(wù)器,連接成功以后,服務(wù)端的程序?qū)@示“Connection accepted”的提示信息。

服務(wù)器端程序(SocketServer.java):

注意86行一直沒有執(zhí)行到,是因為連接一直通著,沒有流的“-1”出現(xiàn),所以一直在79行的while的循環(huán)里執(zhí)行

      
          1:  
      
      
        import 
      
      java.io.InputStream;
    
      
          2:  
      
      
        import 
      
      java.io.OutputStream;
    
      
          3:  
      
    
      
          4:  
      
      
        import 
      
      javax.microedition.io.Connector;
    
      
          5:  
      
      
        import 
      
      javax.microedition.io.ServerSocketConnection;
    
      
          6:  
      
      
        import 
      
      javax.microedition.io.SocketConnection;
    
      
          7:  
      
      
        import 
      
      javax.microedition.lcdui.Alert;
    
      
          8:  
      
      
        import 
      
      javax.microedition.lcdui.AlertType;
    
      
          9:  
      
      
        import 
      
      javax.microedition.lcdui.Command;
    
      
         10:  
      
      
        import 
      
      javax.microedition.lcdui.CommandListener;
    
      
         11:  
      
      
        import 
      
      javax.microedition.lcdui.Display;
    
      
         12:  
      
      
        import 
      
      javax.microedition.lcdui.Displayable;
    
      
         13:  
      
      
        import 
      
      javax.microedition.lcdui.Form;
    
      
         14:  
      
      
        import 
      
      javax.microedition.lcdui.StringItem;
    
      
         15:  
      
      
        import 
      
      javax.microedition.lcdui.TextField;
    
      
         16:  
      
      
        import 
      
      javax.microedition.midlet.MIDlet;
    
      
         17:  
      
      
        import 
      
      javax.microedition.midlet.MIDletStateChangeException;
    
      
         18:  
      
    
      
         19:  
      
      
        public class 
      
      SocketServer 
      
        extends 
      
      MIDlet 
      
        implements 
      
      Runnable, CommandListener {
    
      
         20:  
      
    
      
         21:  
      
      
        private 
      
      Command 
      
        sendCommand 
      
      = 
      
        new 
      
      Command(
      
        "Send"
      
      , Command.
      
        ITEM
      
      , 1);
    
      
         22:  
      
      
        private 
      
      Command 
      
        exitCommand 
      
      = 
      
        new 
      
      Command(
      
        "Exit"
      
      , Command.
      
        EXIT
      
      , 1);
    
      
         23:  
      
      
        private 
      
      Display 
      
        display
      
      ;
    
      
         24:  
      
      
        private 
      
      Form 
      
        f
      
      ;
    
      
         25:  
      
      
        private 
      
      StringItem 
      
        si
      
      ;
    
      
         26:  
      
      
        private 
      
      TextField 
      
        tf
      
      ;
    
      
         27:  
      
      
        private 
      
      ServerSocketConnection 
      
        scn
      
      ;
    
      
         28:  
      
      
        private 
      
      SocketConnection 
      
        sc
      
      ;
    
      
         29:  
      
      
        private 
      
      InputStream 
      
        is
      
      ;
    
      
         30:  
      
      
        private 
      
      OutputStream 
      
        os
      
      ;
    
      
         31:  
      
      
        private boolean 
      
      
        stop
      
      ;
    
      
         32:  
      
    
      
         33:  
      
      
        public 
      
      SocketServer() {
    
      
         34:  
      
      
        display 
      
      = Display.getDisplay(
      
        this
      
      );
    
      
         35:  
      
      
        f 
      
      = 
      
        new 
      
      Form(
      
        "Socket Server"
      
      );
    
      
         36:  
      
      
        si 
      
      = 
      
        new 
      
      StringItem(
      
        "Status: "
      
      , 
      
        ""
      
      );
    
      
         37:  
      
      
        tf 
      
      = 
      
        new 
      
      TextField(
      
        "send:"
      
      , 
      
        ""
      
      , 30, TextField.
      
        ANY
      
      );
    
      
         38:  
      
      
        f
      
      .append(
      
        si
      
      );
    
      
         39:  
      
      
        f
      
      .append(
      
        tf
      
      );
    
      
         40:  
      
      
        f
      
      .addCommand(
      
        exitCommand
      
      );
    
      
         41:  
      
      
        f
      
      .setCommandListener(
      
        this
      
      );
    
      
         42:  
      
      
        display
      
      .setCurrent(
      
        f
      
      );
    
      
         43:  
      
    
      
         44:  
      
              Thread t = 
      
        new 
      
      Thread(
      
        this
      
      );
    
      
         45:  
      
              t.start();
    
      
         46:  
      
          }
    
      
         47:  
      
    
      
         48:  
      
      
        protected void 
      
      destroyApp(
      
        boolean 
      
      arg0) 
      
        throws 
      
      MIDletStateChangeException {
    
      
         49:  
      
      
        // 
      
      
        TODO 
      
      
        Auto-generated method stub
      
    
      
         50:  
      
      
      
    
      
         51:  
      
      
      
      }
    
      
         52:  
      
    
      
         53:  
      
      
        protected void 
      
      pauseApp() {
    
      
         54:  
      
      
        // 
      
      
        TODO 
      
      
        Auto-generated method stub
      
    
      
         55:  
      
      
      
    
      
         56:  
      
      
      
      }
    
      
         57:  
      
    
      
         58:  
      
      
        protected void 
      
      startApp() 
      
        throws 
      
      MIDletStateChangeException {
    
      
         59:  
      
      
        // 
      
      
        TODO 
      
      
        Auto-generated method stub
      
    
      
         60:  
      
      
      
    
      
         61:  
      
      
      
      }
    
      
         62:  
      
    
      
         63:  
      
      
        public void 
      
      run() {
    
      
         64:  
      
      
        try 
      
      {
    
      
         65:  
      
    
      
         66:  
      
      
        si
      
      .setText(
      
        "Waiting for connection"
      
      );
    
      
         67:  
      
      
        // 創(chuàng)建一個服務(wù)器的ServerSocketConnection連接
      
    
      
         68:  
      
      
      
      
        scn 
      
      = (ServerSocketConnection) Connector.open(
      
        "socket://:5000"
      
      );
    
      
         69:  
      
      
        // 等待一個連接
      
    
      
         70:  
      
      
      
      
        sc 
      
      = (SocketConnection) 
      
        scn
      
      .acceptAndOpen();
    
      
         71:  
      
                  System.
      
        out
      
      .println(
      
        "1"
      
      );
    
      
         72:  
      
      
        // 設(shè)置提示信息
      
    
      
         73:  
      
      
      
      
        si
      
      .setText(
      
        "Connection accepted"
      
      );
    
      
         74:  
      
      
        is 
      
      = 
      
        sc
      
      .openInputStream();
    
      
         75:  
      
      
        os 
      
      = 
      
        sc
      
      .openOutputStream();
    
      
         76:  
      
      
        // 連接完成以后允許發(fā)送
      
    
      
         77:  
      
      
      
      
        f
      
      .addCommand(
      
        sendCommand
      
      );
    
      
         78:  
      
      
        // 讀取客戶端發(fā)送來的信息
      
    
      
         79:  
      
      
      
      
        while 
      
      (
      
        true
      
      ) {
    
      
         80:  
      
                      StringBuffer sb = 
      
        new 
      
      StringBuffer();
    
      
         81:  
      
      
        int 
      
      c = 0;
    
      
         82:  
      
      
        // 讀取數(shù)據(jù)
      
    
      
         83:  
      
      
      
      
        while 
      
      (((c = 
      
        is
      
      .read()) != 
      
        '/n' 
      
      && c != -1)) {
    
      
         84:  
      
                          sb.append((
      
        char
      
      ) c);
    
      
         85:  
      
                      }
    
      
         86:  
      
      
        // 讀取數(shù)據(jù)不成功,正常情況一直在連接狀態(tài)流一直沒讀完,不會有"-1"
      
    
      
         87:  
      
      
      
      
        if 
      
      (c == -1) {
    
      
         88:  
      
      
        break
      
      ;
    
      
         89:  
      
                      }
    
      
         90:  
      
      
        // 顯示客戶端反送過來的信息
      
    
      
         91:  
      
      
      
      
        si
      
      .setText(
      
        "Message received - " 
      
      + sb.toString());
    
      
         92:  
      
                  }
    
      
         93:  
      
      
        // stop();
      
    
      
         94:  
      
      
      
      
        si
      
      .setText(
      
        "Connection is closed"
      
      );
    
      
         95:  
      
      
        f
      
      .removeCommand(
      
        sendCommand
      
      );
      
        // 連接結(jié)束,則不顯示發(fā)送按鈕
      
    
      
         96:  
      
      
      
      } 
      
        catch 
      
      (Exception e) {
    
      
         97:  
      
      
        if 
      
      (e.getMessage().equals(
      
        "ServerSocket Open"
      
      )) {
    
      
         98:  
      
      
        // 提示端口已經(jīng)被占用
      
    
      
         99:  
      
      
      
      Alert a = 
      
        new 
      
      Alert(
      
        "Server"
      
      , 
      
        "Port 5000 is already taken."
      
      ,
    
      
        100:  
      
      
        null
      
      , AlertType.
      
        ERROR
      
      );
    
      
        101:  
      
                      a.setTimeout(Alert.
      
        FOREVER
      
      );
    
      
        102:  
      
                      a.setCommandListener(
      
        this
      
      );
    
      
        103:  
      
      
        display
      
      .setCurrent(a);
    
      
        104:  
      
                  } 
      
        else 
      
      {
    
      
        105:  
      
      
        if 
      
      (!
      
        stop
      
      ) {
    
      
        106:  
      
                          e.printStackTrace();
    
      
        107:  
      
                      }
    
      
        108:  
      
                  }
    
      
        109:  
      
              }
    
      
        110:  
      
          }
    
      
        111:  
      
    
      
        112:  
      
      
        // 發(fā)送信息
      
    
      
        113:  
      
      
      
      
        public void 
      
      commandAction(Command c, Displayable d) {
    
      
        114:  
      
      
        if 
      
      (c == 
      
        sendCommand
      
      ) {
      
        // 按字節(jié)發(fā)送信息
      
    
      
        115:  
      
      
      
      
        try 
      
      {
    
      
        116:  
      
      
        os
      
      .write(
      
        tf
      
      .getString().getBytes());
    
      
        117:  
      
      
        os
      
      .write(
      
        "/r/n"
      
      .getBytes());
    
      
        118:  
      
                  } 
      
        catch 
      
      (Exception e) {
    
      
        119:  
      
                      e.printStackTrace();
    
      
        120:  
      
                  }
    
      
        121:  
      
              }
    
      
        122:  
      
      
        if 
      
      (c == 
      
        exitCommand
      
      ) {
    
      
        123:  
      
      
        try 
      
      {
    
      
        124:  
      
                      destroyApp(
      
        false
      
      );
    
      
        125:  
      
                      notifyDestroyed();
    
      
        126:  
      
                  } 
      
        catch 
      
      (MIDletStateChangeException e) {
    
      
        127:  
      
                      e.printStackTrace();
    
      
        128:  
      
                  }
    
      
        129:  
      
              }
    
      
        130:  
      
          }
    
      
        131:  
      
    
      
        132:  
      
      
        // 釋放資源
      
    
      
        133:  
      
      
      
      
        private void 
      
      stop() {
    
      
        134:  
      
      
        try 
      
      {
    
      
        135:  
      
      
        stop 
      
      = 
      
        true
      
      ;
    
      
        136:  
      
      
        if 
      
      (
      
        is 
      
      != 
      
        null
      
      ) {
    
      
        137:  
      
      
        is
      
      .close();
    
      
        138:  
      
                  }
    
      
        139:  
      
      
        if 
      
      (
      
        os 
      
      != 
      
        null
      
      ) {
    
      
        140:  
      
      
        os
      
      .close();
    
      
        141:  
      
                  }
    
      
        142:  
      
      
        if 
      
      (
      
        sc 
      
      != 
      
        null
      
      ) {
    
      
        143:  
      
      
        sc
      
      .close();
    
      
        144:  
      
                  }
    
      
        145:  
      
      
        if 
      
      (
      
        scn 
      
      != 
      
        null
      
      ) {
    
      
        146:  
      
      
        scn
      
      .close();
    
      
        147:  
      
                  }
    
      
        148:  
      
              } 
      
        catch 
      
      (Exception e) {
    
      
        149:  
      
      
        // 
      
      
        TODO
      
      
        : handle exception
      
    
      
        150:  
      
      
      
      }
    
      
        151:  
      
          }
    
      
        152:  
      
      }
    
      
        153:  
      
    

客戶端程序(SockClient.java):

注意:Alert錯誤提示界面還有BUG

      
          1:  
      
      
        import 
      
      java.io.IOException;
    
      
          2:  
      
      
        import 
      
      java.io.InputStream;
    
      
          3:  
      
      
        import 
      
      java.io.OutputStream;
    
      
          4:  
      
    
      
          5:  
      
      
        import 
      
      javax.microedition.io.ConnectionNotFoundException;
    
      
          6:  
      
      
        import 
      
      javax.microedition.io.Connector;
    
      
          7:  
      
      
        import 
      
      javax.microedition.io.SocketConnection;
    
      
          8:  
      
      
        import 
      
      javax.microedition.lcdui.Alert;
    
      
          9:  
      
      
        import 
      
      javax.microedition.lcdui.AlertType;
    
      
         10:  
      
      
        import 
      
      javax.microedition.lcdui.Command;
    
      
         11:  
      
      
        import 
      
      javax.microedition.lcdui.CommandListener;
    
      
         12:  
      
      
        import 
      
      javax.microedition.lcdui.Display;
    
      
         13:  
      
      
        import 
      
      javax.microedition.lcdui.Displayable;
    
      
         14:  
      
      
        import 
      
      javax.microedition.lcdui.Form;
    
      
         15:  
      
      
        import 
      
      javax.microedition.lcdui.StringItem;
    
      
         16:  
      
      
        import 
      
      javax.microedition.lcdui.TextField;
    
      
         17:  
      
      
        import 
      
      javax.microedition.midlet.MIDlet;
    
      
         18:  
      
      
        import 
      
      javax.microedition.midlet.MIDletStateChangeException;
    
      
         19:  
      
    
      
         20:  
      
      
        public class 
      
      SocketClient 
      
        extends 
      
      MIDlet 
      
        implements 
      
      Runnable, CommandListener {
    
      
         21:  
      
    
      
         22:  
      
      
        private 
      
      Command 
      
        sendCommand 
      
      = 
      
        new 
      
      Command(
      
        "Send"
      
      , Command.
      
        ITEM
      
      , 1);
    
      
         23:  
      
      
        private 
      
      Command 
      
        exitCommand 
      
      = 
      
        new 
      
      Command(
      
        "Exit"
      
      , Command.
      
        EXIT
      
      , 1);
    
      
         24:  
      
      
        private 
      
      Form 
      
        f
      
      ;
    
      
         25:  
      
      
        private 
      
      Display 
      
        display
      
      ;
    
      
         26:  
      
      
        private 
      
      StringItem 
      
        si
      
      ;
    
      
         27:  
      
      
        private 
      
      TextField 
      
        tf
      
      ;
    
      
         28:  
      
      
        private 
      
      SocketConnection 
      
        sc
      
      ;
    
      
         29:  
      
      
        private 
      
      InputStream 
      
        is
      
      ;
    
      
         30:  
      
      
        private 
      
      OutputStream 
      
        os
      
      ;
    
      
         31:  
      
      
        private boolean 
      
      
        stop
      
      ;
    
      
         32:  
      
    
      
         33:  
      
      
        public 
      
      SocketClient() {
    
      
         34:  
      
      
        display 
      
      = Display.getDisplay(
      
        this
      
      );
    
      
         35:  
      
      
        f 
      
      = 
      
        new 
      
      Form(
      
        "SocketClient"
      
      );
    
      
         36:  
      
      
        si 
      
      = 
      
        new 
      
      StringItem(
      
        "Status:"
      
      , 
      
        " "
      
      );
    
      
         37:  
      
      
        tf 
      
      = 
      
        new 
      
      TextField(
      
        "Send"
      
      , 
      
        ""
      
      , 30, TextField.
      
        ANY
      
      );
    
      
         38:  
      
      
        f
      
      .append(
      
        si
      
      );
    
      
         39:  
      
      
        f
      
      .append(
      
        tf
      
      );
    
      
         40:  
      
      
        // 添加屏幕按鈕
      
    
      
         41:  
      
      
      
      
        f
      
      .addCommand(
      
        exitCommand
      
      );
    
      
         42:  
      
      
        f
      
      .addCommand(
      
        sendCommand
      
      );
    
      
         43:  
      
      
        f
      
      .setCommandListener(
      
        this
      
      );
    
      
         44:  
      
      
        display
      
      .setCurrent(
      
        f
      
      );
    
      
         45:  
      
              Thread t = 
      
        new 
      
      Thread(
      
        this
      
      );
    
      
         46:  
      
              t.start();
    
      
         47:  
      
          }
    
      
         48:  
      
    
      
         49:  
      
      
        protected void 
      
      destroyApp(
      
        boolean 
      
      arg0) 
      
        throws 
      
      MIDletStateChangeException {
    
      
         50:  
      
      
        // 
      
      
        TODO 
      
      
        Auto-generated method stub
      
    
      
         51:  
      
      
      
    
      
         52:  
      
      
      
      }
    
      
         53:  
      
    
      
         54:  
      
      
        protected void 
      
      pauseApp() {
    
      
         55:  
      
      
        // 
      
      
        TODO 
      
      
        Auto-generated method stub
      
    
      
         56:  
      
      
      
    
      
         57:  
      
      
      
      }
    
      
         58:  
      
    
      
         59:  
      
      
        protected void 
      
      startApp() 
      
        throws 
      
      MIDletStateChangeException {
    
      
         60:  
      
      
        // 
      
      
        TODO 
      
      
        Auto-generated method stub
      
    
      
         61:  
      
      
      
    
      
         62:  
      
      
      
      }
    
      
         63:  
      
    
      
         64:  
      
      
        public void 
      
      run() {
    
      
         65:  
      
      
        try 
      
      {
    
      
         66:  
      
      
        // 打開一個連接本地服務(wù)器的
      
    
      
         67:  
      
      
      
      
        sc 
      
      = (SocketConnection) Connector.open(
      
        "socket://localhost:5000"
      
      );
    
      
         68:  
      
      
        si
      
      .setText(
      
        "Connected to server"
      
      );
    
      
         69:  
      
      
        is 
      
      = 
      
        sc
      
      .openInputStream();
    
      
         70:  
      
      
        os 
      
      = 
      
        sc
      
      .openOutputStream();
    
      
         71:  
      
      
        // 獲得服務(wù)器傳來的信息
      
    
      
         72:  
      
      
      
      
        while 
      
      (
      
        true
      
      ) {
    
      
         73:  
      
                      StringBuffer sb = 
      
        new 
      
      StringBuffer();
    
      
         74:  
      
      
        int 
      
      c = 0;
    
      
         75:  
      
      
        // 讀取數(shù)據(jù)
      
    
      
         76:  
      
      
      
      
        while 
      
      (((c = 
      
        is
      
      .read()) != 
      
        '/n'
      
      ) && c != -1) {
    
      
         77:  
      
                          sb.append((
      
        char
      
      ) c);
    
      
         78:  
      
                      }
    
      
         79:  
      
      
        // 讀取數(shù)據(jù)不成功,正常情況一直在連接狀態(tài)流一直沒讀完,不會有"-1"
      
    
      
         80:  
      
      
      
      
        if 
      
      (c == -1) {
    
      
         81:  
      
      
        break
      
      ;
    
      
         82:  
      
                      }
    
      
         83:  
      
      
        // 在屏幕上顯示信息
      
    
      
         84:  
      
      
      
      
        si
      
      .setText(
      
        "Message received - " 
      
      + sb.toString());
    
      
         85:  
      
                  }
    
      
         86:  
      
                  stop();
      
        // 停止連接
      
    
      
         87:  
      
      
      
      
        si
      
      .setText(
      
        "Connection closed"
      
      );
    
      
         88:  
      
      
        f
      
      .removeCommand(
      
        sendCommand
      
      );
    
      
         89:  
      
              } 
      
        catch 
      
      (ConnectionNotFoundException cnfe) {
    
      
         90:  
      
                  Alert a = 
      
        new 
      
      Alert(
      
        "Client"
      
      , 
      
        "Please run Server MIDlet first"
      
      ,
    
      
         91:  
      
      
        null
      
      , AlertType.
      
        ERROR
      
      );
    
      
         92:  
      
                  a.setTimeout(Alert.
      
        FOREVER
      
      );
    
      
         93:  
      
      
        //a.setCommandListener(this);//有這句警告屏無法退回
      
    
      
         94:  
      
      
      
      
        display
      
      .setCurrent(a);
      
        // 顯示警告屏
      
    
      
         95:  
      
      
      
      } 
      
        catch 
      
      (IOException ioe) {
      
        // 出錯
      
    
      
         96:  
      
      
      
      
        if 
      
      (!
      
        stop
      
      ) {
    
      
         97:  
      
                      ioe.printStackTrace();
    
      
         98:  
      
                  }
    
      
         99:  
      
              } 
      
        catch 
      
      (Exception e) {
      
        // 打印出錯信息
      
    
      
        100:  
      
      
      
      e.printStackTrace();
    
      
        101:  
      
              }
    
      
        102:  
      
          }
    
      
        103:  
      
    
      
        104:  
      
      
        // 釋放資源
      
    
      
        105:  
      
      
      
      
        private void 
      
      stop() {
    
      
        106:  
      
      
        try 
      
      {
    
      
        107:  
      
      
        stop 
      
      = 
      
        true
      
      ;
    
      
        108:  
      
      
        if 
      
      (
      
        is 
      
      != 
      
        null
      
      ) {
    
      
        109:  
      
      
        is
      
      .close();
    
      
        110:  
      
                  }
    
      
        111:  
      
      
        if 
      
      (
      
        os 
      
      != 
      
        null
      
      ) {
    
      
        112:  
      
      
        os
      
      .close();
    
      
        113:  
      
                  }
    
      
        114:  
      
      
        if 
      
      (
      
        sc 
      
      != 
      
        null
      
      ) {
    
      
        115:  
      
      
        sc
      
      .close();
    
      
        116:  
      
                  }
    
      
        117:  
      
              } 
      
        catch 
      
      (Exception e) {
    
      
        118:  
      
                  e.printStackTrace();
    
      
        119:  
      
              }
    
      
        120:  
      
          }
    
      
        121:  
      
    
      
        122:  
      
      
        // 發(fā)送信息給服務(wù)器
      
    
      
        123:  
      
      
      
      
        public void 
      
      commandAction(Command c, Displayable d) {
    
      
        124:  
      
      
        if 
      
      (c == 
      
        sendCommand
      
      ) {
    
      
        125:  
      
      
        try 
      
      {
      
        // 發(fā)送用戶輸入數(shù)據(jù)
      
    
      
        126:  
      
      
      
      
        os
      
      .write(
      
        tf
      
      .getString().getBytes());
    
      
        127:  
      
      
        os
      
      .write(
      
        "/r/n"
      
      .getBytes());
    
      
        128:  
      
                  } 
      
        catch 
      
      (Exception e) {
    
      
        129:  
      
                      e.printStackTrace();
    
      
        130:  
      
                  }
    
      
        131:  
      
              }
    
      
        132:  
      
      
        if 
      
      (c == 
      
        exitCommand
      
      ) {
    
      
        133:  
      
      
        try 
      
      {
    
      
        134:  
      
                      destroyApp(
      
        false
      
      );
    
      
        135:  
      
                      notifyDestroyed();
    
      
        136:  
      
                  } 
      
        catch 
      
      (MIDletStateChangeException e) {
    
      
        137:  
      
                      e.printStackTrace();
    
      
        138:  
      
                  }
    
      
        139:  
      
              }
    
      
        140:  
      
          }
    
      
        141:  
      
    
      
        142:  
      
      }
    
      
        143:  
      
    

J2ME:MIDP開發(fā)Socket程序


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 深夜福利影院 | 97超视频在线观看 | 成人毛片一区二区三区 | 九九视频在线播放 | 成人动漫影院 | 久久99热久久国产精品 | 国产精品女仆装在线播放 | 欧美18在线| 天天摸夜夜摸夜夜狠狠摸 | 一本大道香蕉大在线最新 | 欧美一级毛片aaa片 欧美一级毛片不卡免费观看 | 色鬼久久爱综合久久鬼色 | 欧美激情在线免费观看 | 五月婷婷综合色 | 欧美一级毛片免费观看视频 | 精品久久久久久久一区二区手机版 | 亚洲人成伊人成综合网久久久 | 奇米第四色在线观看 | 久久91| 欧洲美女高清一级毛片 | 97在线资源站 | 日韩小视频在线播放 | 欧美色综合高清免费 | 精品国产成人三级在线观看 | 最新中文字幕在线观看 | 爱爱永久免费视频网站 | 国产高清自拍视频 | 狠狠色噜噜狠狠狠狠2018 | 色视频2| 一级毛片aa| 国产ar高清视频+视频 | 色综合成人丁香 | 久久亚洲国产精品五月天 | 日韩精品一区二区三区毛片 | 农村妇女高清毛片一级 | 国产精品国产自线在线观看 | 日日干日日摸 | 日韩色视频一区二区三区亚洲 | 日日操狠狠干 | 亚州综合 | 天天拍天天干天天操 |