本文实例为大家分享了Java实现聊天机器人的具体代码,供大家参考,具体内容如下
服务器的代码:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
package Day02; import java.io.*; import java.net.*;
public class Socket1 { public static void main(String[] args) throws Exception{ int port= 8899 ; ServerSocket server= null ; MChat MC= new MChat(); try { server= new ServerSocket(port); System.out.println( "服务器启动..." ); while ( true ) { Socket socket=server.accept(); //监听客户端连接,如果客户端连接成功,返回实例化的Socket对象 System.out.println( "客户端信息:" +socket); //读取流操作 SocketThd thd= new SocketThd(socket); thd.start(); } } catch (Exception e) { // TODO: handle exception } finally { try { if (server!= null ) server.close(); System.out.println( "服务器已停止! " ); } catch (Exception e2) { // TODO: handle exception } } } static class SocketThd extends Thread{ MChat MC= new MChat(); Socket socket; //和客户端进行通信的对象 BufferedReader br= null ; PrintWriter pw= null ; public SocketThd(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 ) { System.out.println( "客户端:" +str); //服务器处理 String rtn= "" ; //聊天机器人处理程序 rtn=MC.getCharResult(str); //处理结果返回客户端 pw.println(rtn); pw.flush(); } } catch (Exception e) { e.printStackTrace(); } finally { // TODO: handle finally clause try { if (br!= null ) br.close(); if (pw!= null ) pw.close(); if (socket!= null ) socket.close(); } catch (Exception e2) { // TODO: handle exception } } } } } |
客户端的代码:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package Day02;
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 Client1 { public static void main(String[] args) throws Exception{ String IP= "192.168.1.*" ; int port= 8899 ; Socket socket= new Socket(IP,port); //建立与服务器连接
//读取流操作 BufferedReader br= new BufferedReader( new InputStreamReader(socket.getInputStream(), "UTF-8" )); BufferedReader brKey= new BufferedReader( new InputStreamReader(System.in, "UTF-8" )); //写入流操作 PrintWriter pw= new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(), "UTF-8" ))); while ( true ) { String send=brKey.readLine(); //等待阻塞命令 if (send.equals( "END" )) { //键盘输入的借宿条件 break ; } //向服务器发送信息
pw.println(send); pw.flush(); //接收服务端回复的消息 String strRtn=br.readLine();
System.out.println( "服务端回复信息:" +strRtn); } //关闭连接 br.close(); pw.close(); socket.close(); } } |
对话内容引擎:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package Day02;
import java.util.Hashtable;
public class MChat { private Hashtable<String, String> htMS= new Hashtable<>(); public String getCharResult(String sKey) { String str=htMS.get(sKey); if (str== null ) return "" ; else return str;
} public MChat() { htMS.put( "你好呀" , "你也好呀,你需啊什么服务吗?" ); htMS.put( "见到你很高兴" , "我也很高兴见到你。" ); htMS.put( "吃了吗" , "今天吃的好饱呀" ); htMS.put( "好累呀" , "听音乐轻松一下吧" ); htMS.put( "路上好堵呀" , "需要哦给你选一条路线吗" ); htMS.put( "再见" , "我先走了,有事你叫我" );
} } |
实现结果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
原文链接:https://blog.csdn.net/aaassslll147/article/details/105521359