好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java实现聊天机器人

本文实例为大家分享了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

查看更多关于Java实现聊天机器人的详细内容...

  阅读:24次