成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java實現聊天機器人完善版

瀏覽:160日期:2022-08-09 11:23:22

本文實例為大家分享了Java實現聊天機器人完善版的具體代碼,供大家參考,具體內容如下

Java實現聊天機器人完善版

Client代碼:

package GUISocket.chat.Client;import javax.swing.JFrame;import javax.swing.JPanel;import java.awt.EventQueue; import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JTextField;import javax.swing.DefaultListModel;import javax.swing.JButton;import javax.swing.JTextArea;import javax.swing.JScrollPane;import javax.swing.ScrollPaneConstants;import javax.swing.border.EmptyBorder; import java.awt.event.ActionListener;import java.awt.event.ActionEvent; public class ClientForm extends JFrame { private JPanel contentPane; DefaultListModel<String> itemUsers; private JTextField textIP; private JTextField textPort; public JTextField textUser; public JTextArea textLog; public JList listUser; public JTextArea textSend ; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { ClientForm frame = new ClientForm(); frame.setVisible(true); ClientMG.getClientMG().setClientForm(frame); } catch (Exception e) { e.printStackTrace(); } } }); } public ClientForm() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 589, 607); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel label = new JLabel('配置信息'); label.setBounds(10, 10, 54, 15); contentPane.add(label); JLabel lblIp = new JLabel('IP'); lblIp.setBounds(10, 35, 27, 15); contentPane.add(lblIp); textIP = new JTextField(); textIP.setText('192.168.1.6'); textIP.setBounds(33, 35, 92, 21); contentPane.add(textIP); textIP.setColumns(10); JLabel label_1 = new JLabel('端口'); label_1.setBounds(137, 35, 38, 15); contentPane.add(label_1); textPort = new JTextField(); textPort.setText('8900'); textPort.setBounds(168, 32, 66, 21); contentPane.add(textPort); textPort.setColumns(10); JLabel label_2 = new JLabel('用戶名'); label_2.setBounds(255, 38, 54, 15); contentPane.add(label_2); textUser = new JTextField(); textUser.setBounds(302, 35, 66, 21); contentPane.add(textUser); textUser.setColumns(10); JButton LOGIN = new JButton('登錄'); LOGIN.setBounds(395, 34, 66, 23); contentPane.add(LOGIN); JButton btnClose = new JButton('關閉'); btnClose.setBounds(480, 31, 71, 23); contentPane.add(btnClose); JPanel panel = new JPanel(); panel.setBounds(0, 10, 573, 61); contentPane.add(panel); panel.setLayout(null); JPanel panel_1 = new JPanel(); panel_1.setBounds(0, 81, 573, 369); contentPane.add(panel_1); panel_1.setLayout(null); JLabel label_3 = new JLabel('聊天記錄'); label_3.setBounds(10, 10, 54, 15); panel_1.add(label_3); JScrollPane scrollPane = new JScrollPane(); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane.setBounds(20, 35, 323, 324); panel_1.add(scrollPane); textLog = new JTextArea(); textLog.setWrapStyleWord(true); textLog.setLineWrap(true); scrollPane.setViewportView(textLog); JLabel label_4 = new JLabel('在線用戶'); label_4.setBounds(351, 10, 54, 15); panel_1.add(label_4); JScrollPane scrollPane_1 = new JScrollPane(); scrollPane_1.setBounds(353, 35, 210, 324); panel_1.add(scrollPane_1); this.itemUsers=new DefaultListModel<String>(); this.listUser=new JList(itemUsers); scrollPane_1.setViewportView(this.listUser); JPanel panel_2 = new JPanel(); panel_2.setBounds(10, 449, 553, 119); contentPane.add(panel_2); panel_2.setLayout(null); JLabel label_5 = new JLabel('操作'); label_5.setBounds(10, 10, 54, 15); panel_2.add(label_5); JScrollPane scrollPane_2 = new JScrollPane(); scrollPane_2.setBounds(10, 22, 533, 64); panel_2.add(scrollPane_2); textSend = new JTextArea(); textSend.setWrapStyleWord(true); textSend.setLineWrap(true); scrollPane_2.setViewportView(textSend); JButton button_1 = new JButton('群發'); button_1.addActionListener(new Button_1ActionListener()); button_1.setBounds(307, 86, 93, 23); panel_2.add(button_1); JButton sendMG = new JButton('發送'); sendMG.addActionListener(new SendMGActionListener()); sendMG.setBounds(432, 86, 93, 23); panel_2.add(sendMG); LOGIN.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //連接服務器user String IP=textIP.getText().trim(); int port=Integer.parseInt(textPort.getText().trim()); String user=textUser.getText().trim();if(ClientMG.getClientMG().Connect(IP,port,user)) { ClientMG.getClientMG().setLogTxt('已經連接到服務器'); } else { ClientMG.getClientMG().setLogTxt('連接服務器失敗'); } } }); } private class SendMGActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { //發送信息 //1.獲取選擇的用戶名稱 //2.發送給服務器端含有接收用戶信息的交互協議串 String SenderName=ClientMG.getClientMG().getClientThd().getName(); String RecName=listUser.getSelectedValue().toString(); String MSGinfo=textSend.getText().trim(); String sMsg='MSG|'+SenderName+'|'+RecName+'|'+MSGinfo; ClientMG.getClientMG().getClientThd().sendMsg(sMsg); //將消息內容顯示到聊天記錄中 //[發送者] //消息內容 //清空發送消息框 ClientMG.getClientMG().setLogTxt('[我]:'); ClientMG.getClientMG().setLogTxt(MSGinfo); textSend.setText(''); } } private class Button_1ActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { //群發信息 //1.獲取選擇的用戶名稱 //2.發送給服務器端含有接收用戶信息的交互協議串 //發送到服務器,MSG|SenderName|RecName|MSGInfo String SenderName=ClientMG.getClientMG().getClientThd().getName(); String RecName='ALL'; String MSGinfo=textSend.getText().trim(); String sMsg='MSG|'+SenderName+'|'+RecName+'|'+MSGinfo; ClientMG.getClientMG().getClientThd().sendMsg(sMsg); //將消息內容顯示到聊天記錄中 //[發送者] //消息內容 //清空發送消息框 ClientMG.getClientMG().setLogTxt('[我]:'); ClientMG.getClientMG().setLogTxt(MSGinfo); textSend.setText(''); } } }

ClientMG代碼:

package GUISocket.chat.Client; import java.net.Socket; public class ClientMG { private static final ClientMG clientmg=new ClientMG(); private ClientMG() {} public static ClientMG getClientMG() { return clientmg; } private ClientForm clientWin; public void setClientForm(ClientForm c) { clientWin=c; } public void setLogTxt(String str) { clientWin.textLog.append(str+'rn'); } public void addItem(String user) { clientWin.itemUsers.addElement(user); } public void addItems(String[] users) { for(int i=0;i<users.length;i++) { clientWin.itemUsers.addElement(users[i]); } } SocketThread sthd; public boolean Connect(String IP,int port,String user) { Socket socket=null; try { socket=new Socket(IP,port); sthd=new SocketThread(socket, user); sthd.start(); return true; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return false; } } public SocketThread getClientThd() { return sthd; }}

SocketThread代碼:

package GUISocket.chat.Client; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket; public class SocketThread extends Thread{ BufferedReader br=null; PrintWriter pw=null; Socket socket=null; public SocketThread(Socket socket,String user){ super(user);//登錄時用的用戶名 this.socket=socket; } public void run() { try { br=new BufferedReader(new InputStreamReader(socket.getInputStream(), 'UTF-8')); pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),'UTF-8'))); String sLOGIN='LOGIN|'+this.getName(); sendMsg(sLOGIN); String str=''; while((str=br.readLine())!=null) { String[] commands=str.split('|'); if(commands[0].equals('USERLISTS')) {//USERLISTS|user1_user2_user3 String[] sUsers=commands[1].split('_'); ClientMG.getClientMG().addItems(sUsers); } else if(commands[0].equals('ADD')) {//ADD|UserName String sNewUser=commands[1]; ClientMG.getClientMG().addItem(sNewUser); } else if(commands[0].equals('MSG')) {//格式 MSG|SenderName|MSGinfo String SenderName=commands[1]; String MSGinfo=commands[2]; //將消息內容顯示到聊天記錄中 //[發送者] //消息內容 ClientMG.getClientMG().setLogTxt('['+SenderName+']'); ClientMG.getClientMG().setLogTxt(MSGinfo); } //ClientMG.getClientMG().setLogTxt(str); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally { try { if(pw!=null) pw.close(); if(br!=null) br.close(); if(socket!=null) socket.close(); } catch (Exception e2) { // TODO: handle exception } } } public void sendMsg(String str) { pw.println(str); pw.flush(); }}

ServerForm代碼:

package GUISocket.chat.Server;import javax.swing.JFrame;import javax.swing.JPanel;import java.awt.EventQueue; import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.JButton;import javax.swing.JTextArea;import javax.swing.JScrollPane;import javax.swing.ScrollPaneConstants;import javax.swing.border.EmptyBorder; import java.awt.event.ActionListener;import java.awt.event.ActionEvent; public class ServerForm extends JFrame { /** * */ private JPanel contentPane; public JTextArea textLog; private JTextField textPort; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { ServerForm frame = new ServerForm(); frame.setVisible(true); ServerMG.getServerMG().setServerForm(frame); } catch (Exception e) { e.printStackTrace(); } } }); } public ServerForm() { setTitle('多人聊天服務器'); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 510, 566); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel lblNewLabel = new JLabel('配置信息'); lblNewLabel.setBounds(20, 10, 54, 15); contentPane.add(lblNewLabel); JLabel label = new JLabel('端口:'); label.setBounds(30, 34, 39, 15); contentPane.add(label); textPort = new JTextField(); textPort.setText('8900'); textPort.setBounds(65, 31, 66, 21); contentPane.add(textPort); textPort.setColumns(10); JButton btnStart = new JButton('開啟服務'); btnStart.addActionListener(new BtnStartActionListener()); btnStart.setBounds(180, 30, 93, 23); contentPane.add(btnStart); JButton btnClose = new JButton('關閉服務'); btnClose.addActionListener(new BtnCloseActionListener()); btnClose.setBounds(325, 30, 93, 23); contentPane.add(btnClose); JPanel panel = new JPanel(); panel.setBounds(10, 10, 474, 54); contentPane.add(panel); panel.setLayout(null); JLabel label_1 = new JLabel('消息記錄'); label_1.setBounds(10, 94, 54, 15); contentPane.add(label_1); JPanel panel_1 = new JPanel(); panel_1.setBounds(0, 81, 474, 436); contentPane.add(panel_1); panel_1.setLayout(null); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(10, 41, 464, 368); panel_1.add(scrollPane); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); textLog = new JTextArea(); textLog.setLineWrap(true); textLog.setWrapStyleWord(true); scrollPane.setViewportView(textLog); } private class BtnCloseActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { } } private class BtnStartActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { //開啟服務 int port=Integer.parseInt(textPort.getText().trim()); if(ServerMG.getServerMG().CreateServer(port)) { ServerMG.getServerMG().setLogTxt('服務器開啟...'); } else { ServerMG.getServerMG().setLogTxt('服務器開啟失敗...'); } } }}

ServerListener代碼:

package GUISocket.chat.Server; import java.net.ServerSocket;import java.net.Socket; public class ServerListener extends Thread{ Socket socket=null; ServerSocket server=null; public ServerListener(ServerSocket server) { this.server=server; } public void run() { try { while(true) { socket=server.accept(); ServerMG.getServerMG().setLogTxt('客戶端: '+socket); new SocketThread(socket).start(); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }

SeverMG代碼:

package GUISocket.chat.Server; import java.net.ServerSocket;import java.net.Socket;import java.util.ArrayList; import javax.swing.JTextArea; public class ServerMG { private static final ServerMG servermg=new ServerMG(); private ServerMG() {} public static ServerMG getServerMG() { return servermg; } //主界面的操作 private ServerForm serverWin; //將窗體對象注冊到管理類當中 public void setServerForm(ServerForm s) { serverWin=s; } //設置主界面 public void setLogTxt(String str) { serverWin.textLog.append(str+'rn'); } private ServerSocket server; public boolean CreateServer(int port) { try { server=new ServerSocket(port); new ServerListener(server).start(); return true; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return false; } } //ArrayList操作 ArrayList<SocketThread> a1OnlineList=new ArrayList<>();//存放所有和 public synchronized void addList(SocketThread sc) { //限制重名 a1OnlineList.add(sc); } public void clearList() { a1OnlineList.clear(); } public synchronized void removeList(SocketThread sc) { for(int i=0;i<a1OnlineList.size();i++) { SocketThread s=a1OnlineList.get(i); if(s.equals(sc)) { a1OnlineList.remove(sc); break; } } } //信息的管理 public void getOnlineNames(SocketThread sc) { //非第1次登錄時,得到所有的在線用戶 if(a1OnlineList.size()>0) { String sUsers='';//給客戶端,USERLISTS|user1_user2_user3 for(int i=0;i<a1OnlineList.size();i++) { SocketThread s=a1OnlineList.get(i); sUsers+=s.getName()+'_'; } sc.sendMsg('USERLISTS|'+sUsers); } } public void sendNewUsertoAll(SocketThread sc) { for(int i=0;i<a1OnlineList.size();i++) { SocketThread s=a1OnlineList.get(i); s.sendMsg('ADD|'+sc.getName()); } } //通過Mame用戶名查找目標 public SocketThread getSocketThreadByName(String sName) { for(int i=0;i<a1OnlineList.size();i++) { SocketThread s=a1OnlineList.get(i); if(s.getName().equals(sName)) { return s; } } return null; } //發送給所有人,但是要排除自身 public void sendMsgtoAll(String sMsg,SocketThread sc) { for(int i=0;i<a1OnlineList.size();i++) { SocketThread s=a1OnlineList.get(i); if(!s.equals(sc)) { s.sendMsg(sMsg); } } } }

SocketThread代碼:

package GUISocket.chat.Server; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket; public class SocketThread extends Thread{ BufferedReader br=null; PrintWriter pw=null; Socket socket=null; public SocketThread(Socket socket) { this.socket = socket; } public void run() { try { br=new BufferedReader(new InputStreamReader(socket.getInputStream(), 'UTF-8')); pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),'UTF-8'))); String str=''; while((str=br.readLine())!=null) {//循環響應客戶的發送信息//接受客戶端發過來的信息 String [] commands=str.split('|');if(commands[0].equals('LOGIN')) {//解析登錄請求,格式,LOGIN|UserName String sUSER=commands[1]; this.setName(sUSER);//將用戶名信息放入Threadname中 //1.得到所有在線用戶信息名稱,發回客戶端:USERLISTS|user1_user2_user3 ServerMG.getServerMG().getOnlineNames(this); //2.將當前登錄用戶的信息(用戶名),發送給已經在線的其他用戶,ADD|userName ServerMG.getServerMG().sendNewUsertoAll(this); //3.將當前登錄的Socket信息放入ArrayList中 ServerMG.getServerMG().addList(this); } else if(commands[0].equals('MSG')) {//格式:MSG|SenderName|RecName|MSGoinfo String SenderName=commands[1]; String RecName=commands[2]; String MSGinfo=commands[3]; //群聊 if(RecName.equals('ALL')) { String sMsg='MSG!'+SenderName+'|'+MSGinfo;//格式:MSG|SenderName|MSGinfo ServerMG.getServerMG().sendMsgtoAll(sMsg,this); ServerMG.getServerMG().setLogTxt(SenderName+'發送信息['+MSGinfo+']到所有人。'); } //私聊 else { //通過RecName用戶名查找,找到目標SocketThread SocketThread sc=ServerMG.getServerMG().getSocketThreadByName(RecName); if(sc!=null) {//目標對象發送信息,MSG|SenderName|MSGinfoString sMsg='MSG!'+SenderName+'|'+MSGinfo;sc.sendMsg(sMsg);//寫入信息日志ServerMG.getServerMG().setLogTxt(SenderName+'發送信息['+MSGinfo+']到'+RecName); } } } } } catch (Exception e) { e.printStackTrace(); }finally { try { if(pw!=null) pw.close(); if(br!=null) br.close(); if(socket!=null) socket.close(); } catch (Exception e2) { // TODO: handle exception } } } public void closeChat() { try { if(pw!=null) pw.close(); if(br!=null) br.close(); if(socket!=null) socket.close(); } catch (Exception e) { e.printStackTrace(); } } public void sendMsg(String str) { pw.println(str); pw.flush(); }}

實現結果如下:

Java實現聊天機器人完善版

Java實現聊天機器人完善版

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产精品原创巨作av| 国产麻豆精品一区二区| 韩国一区二区三区| 亚洲一区二区三区色| 亚洲欧洲日韩av| 午夜久久美女| 欧美精品一区二区三| 国产精品系列在线观看| 欧美色视频在线| 日韩精品福利网| 亚洲欧洲日本mm| 亚洲丝袜另类动漫二区| 欧美另类综合| 国产欧美日韩视频一区二区| 99综合影院在线| 日韩视频在线你懂得| 国产在线国偷精品产拍免费yy| 欧美性一区二区| 捆绑紧缚一区二区三区视频| 色www精品视频在线观看| 一区二区三区日本| 一区二区三区久久网| 亚洲色图视频网| 亚洲丰满在线| 亚洲人吸女人奶水| 激情视频一区| 亚洲码国产岛国毛片在线| 亚洲激情网站| 亚洲最大成人综合| 久久精品亚洲一区二区| 日韩和欧美一区二区| 久久久久久亚洲精品不卡4k岛国| 亚洲国产成人高清精品| 久久精品亚洲| 久久99热99| 51精品久久久久久久蜜臀| 国产成人精品免费网站| 精品国产电影一区二区| 91麻豆123| 中文字幕在线观看不卡视频| 亚洲午夜精品一区二区| 亚洲免费观看在线视频| 午夜亚洲福利在线老司机| 无码av中文一区二区三区桃花岛| 一本色道久久综合精品竹菊| 久久国产精品色| 69堂成人精品免费视频| 99久久综合99久久综合网站| 中文字幕欧美国产| 在线综合亚洲| 日本欧美在线观看| 555www色欧美视频| 91亚洲精华国产精华精华液| 国产精品人人做人人爽人人添| 在线观看亚洲| 亚洲成人先锋电影| 欧美日韩一区二区在线观看| 国产黄人亚洲片| 国产亚洲欧美中文| 99人久久精品视频最新地址| 秋霞国产午夜精品免费视频| 欧美一级淫片007| 91日韩在线专区| 亚洲精品国久久99热| 在线观看亚洲精品视频| 国产91清纯白嫩初高中在线观看 | 男女男精品视频网| 欧美人妇做爰xxxⅹ性高电影| 成人av午夜电影| 亚洲色图欧美激情| 在线免费观看日本一区| 成人免费毛片嘿嘿连载视频| 国产精品电影一区二区| 免费看的黄色欧美网站| 国产精品综合二区| 中国av一区二区三区| 久久欧美肥婆一二区| 国产成人精品亚洲777人妖| 亚洲欧洲色图综合| 欧美午夜免费电影| 色综合天天综合网国产成人综合天| 一区二区三区蜜桃| 欧美蜜桃一区二区三区| 欧美大香线蕉线伊人久久国产精品| 亚洲一区二区三区免费视频| 91精品国产全国免费观看| 欧美日韩一区二区三| 日韩精品视频网站| 日韩精品在线一区二区| 最新成人av网站| 国产精品一区一区| 亚洲人成在线观看一区二区| 5566中文字幕一区二区电影| 亚洲大黄网站| 国产综合一区二区| 亚洲国产高清在线观看视频| 91成人国产精品| 91免费版pro下载短视频| 亚洲成av人片www| 久久人人97超碰com| 老牛影视一区二区三区| 91麻豆自制传媒国产之光| 日本中文一区二区三区| 国产喂奶挤奶一区二区三区| 在线视频你懂得一区| 欧美日本三区| 久久国产三级精品| 亚洲欧美在线观看| 日韩一级片网站| 美女网站久久| 色综合久久中文综合久久牛| 免费成人在线视频观看| 国产精品美女久久久久高潮| 91麻豆精品国产91久久久久| 国产日产高清欧美一区二区三区| 成人爽a毛片一区二区免费| 亚洲国产精品尤物yw在线观看| 精品久久久三级丝袜| 日本道色综合久久| 亚洲人妖在线| 波多野结衣在线aⅴ中文字幕不卡| 成人爱爱电影网址| 国产综合久久久久影院| 丁香另类激情小说| 伊人久久大香线蕉综合热线| 韩国一区二区三区在线观看 | 欧美一区二区三区在线| 欧美天天视频| 丁香亚洲综合激情啪啪综合| 免费看黄色91| 日韩西西人体444www| 久久久久高清| 亚洲一二三区在线| 成人高清免费观看| 久久成人av少妇免费| 夜夜嗨av一区二区三区中文字幕 | 欧美一区三区二区| 亚洲免费中文| 欧美日韩精品免费观看视频完整| 国产成人在线观看| 日本亚洲最大的色成网站www| 国产精品美女久久久久久久久久久 | 午夜精品久久久久久久99樱桃| 欧美激情一区二区三区在线| 欧美日韩国产不卡| 久久精品国产清高在天天线| 亚洲国产欧美日韩| 欧美 日韩 国产 一区| 粉嫩嫩av羞羞动漫久久久| 久久成人18免费观看| 日本午夜一本久久久综合| 日韩理论电影院| 欧美国产综合一区二区| 欧美大片日本大片免费观看| 欧美三区在线视频| 日本道免费精品一区二区三区| 国产精品视频福利| 激情婷婷欧美| 99re热这里只有精品免费视频| 国产精品羞羞答答xxdd| 久久国产生活片100| 日韩综合小视频| 午夜精品免费在线| 天堂va蜜桃一区二区三区| 亚洲国产精品视频| 亚洲一区二区三区四区五区中文 | 波多野结衣欧美| 成人精品一区二区三区中文字幕| 卡一卡二国产精品 | 亚洲国产中文字幕| 亚洲免费观看高清在线观看| 国产精品色在线| 国产亚洲欧美在线| 国产女主播视频一区二区| 国产亚洲1区2区3区| 久久精品夜色噜噜亚洲aⅴ| 精品播放一区二区| 精品国内二区三区| 精品福利一二区| 日韩精品中文字幕一区 | 亚洲精品久久7777| 一区二区激情视频| 亚洲国产日韩在线一区模特| 亚洲国产乱码最新视频| 午夜电影久久久| 日韩精品电影在线观看| 美腿丝袜亚洲三区| 国产一区视频网站| 丁香五精品蜜臀久久久久99网站 | 色久优优欧美色久优优| 久久婷婷丁香| 欧美色综合网站| 欧美一区二区三区免费| 精品少妇一区二区三区视频免付费 | 成人中文字幕合集| 成人精品视频一区二区三区| 成人涩涩免费视频| 欧美精品麻豆| 亚洲乱码久久| 色综合久久九月婷婷色综合|