Java实现聊天机器人

网友投稿 313 2022-10-14


Java实现聊天机器人

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

http:// 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 Bufferehttp://dReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));

//写入流操作

pw=new PrintWriter(

new BufferedWriter(new OutputStrhttp://eamWriter(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 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("再见", "我先走了,有事你叫我");

}

}

实现结果如下:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:全球首家! 紫光展锐通过TMMi 5级认证
下一篇:【物联网+区块链=?】展锐、蚂蚁链、广和通联合发布可信上链模组!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~