您好,登錄后才能下訂單哦!
小編給大家分享一下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("再見", "我先走了,有事你叫我"); } }
實現結果如下:
以上是“Java中怎么實現聊天機器人”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。