首页 > 文章列表 > Java实现聊天机器人的代码怎么写

Java实现聊天机器人的代码怎么写

java
196 2023-04-25

Java实现聊天机器人的代码怎么写

服务器的代码:

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

      }

    }    

  }

 }

}

客户端的代码:

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();

 }

}

对话内容引擎:

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("再见", "我先走了,有事你叫我");

 

 }

}

实现结果如下: