使用socket与线程实现简单机器人聊天
来源:互联网 发布:nginx 域名不能访问 编辑:程序博客网 时间:2024/06/01 10:28
Socket的英文原义称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
以下是代码示例(部分代码有注释):
SocketDemo.java:
import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class SocketDemo {/** * 使用socket与线程实现简单机器人聊天 */public static void test1(){try {//创建一个服务端,端口号是8888,等待客户端的连接ServerSocket serversocket=new ServerSocket(8888);while(true){//客户端连接成功Socket socket=serversocket.accept();System.out.println(socket.getInetAddress());//调用SocketThread类,并把接收的Socket对象传进去SocketThread st=new SocketThread(socket);//可以让多个用户同时连接服务端并执行同一个线程st.start();}} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {test1();}}SocketThread.java:
import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner;public class SocketThread extends Thread {Socket socket = null;// 重写构造方法,可以传入socket对象public SocketThread(Socket socket) {this.socket = socket;}/** * 功能:实现服务端与客户端的对话 */public void run() {try {//获取客户端的输入流InputStream in = socket.getInputStream();//把输入流用Scanner对象接收,编码格式为UTF-8Scanner sc = new Scanner(in, "UTF-8");//获取客户端的输出流OutputStream os = socket.getOutputStream();//把输出流用PrintWriter对象接收PrintWriter pw = new PrintWriter(os);pw.println("Welcome to my home!");//刷新输出流pw.flush();if (sc != null) {while (sc.hasNextLine()) {//获取客户端的输入的信息String msg = sc.nextLine();//以下均是判断的内容,由于编码问题,这里均是英文测试if (msg.contains("hello")) {pw.println("hello,how are you!");pw.flush();} else if (msg.contains("I love you")) {pw.println("Me too!I miss you!");pw.flush();} else if (msg.contains("what's your name")) {pw.println("My name is robot!");pw.flush();} else if (msg.equalsIgnoreCase("exit")) {pw.println("bye");pw.flush();break;} else {pw.println("sorry,I don't understand!");pw.flush();}}}in.close();pw.close();os.close();socket.close();} catch (IOException e) {e.printStackTrace();}}}
就是这么简单,今天是情人节,程序猿偷个懒。
0 0
- 使用socket与线程实现简单机器人聊天
- 使用Socket实现简单聊天
- java Socket简单聊天实现 —— 线程版实现
- 使用Socket、SeverSocket,利用线程实现的简单的一对一聊天
- java Socket简单聊天实现 —— 使用线程池及同步锁
- socket 线程池简单聊天
- 4.利用socket实现聊天机器人
- java Socket简单聊天实现
- 使用Express + Socket.io + MongoDB实现简单的聊天
- 使用Socket实现最简单的聊天功能
- 使用Java Socket实现简单的聊天功能
- 使用aiml/lsh实现在线聊天机器人
- 使用seq2seq模型实现一个聊天机器人
- java与c#使用Socket实现局域网聊天
- 简单的聊天机器人
- tf13: 简单聊天机器人
- React实现聊天机器人
- 动手实现聊天机器人
- 指针的分类有哪些
- C++模板元编程
- WIN32 API 函数大全
- struts中的配置文件
- cuda测试caffe编译安装
- 使用socket与线程实现简单机器人聊天
- Revit API 进阶之隐藏dll讲解.
- Echarts2绘制动态曲线图并给出完整代码
- 简单使用多线程和Socket,实现自动问答
- hdu 1024 Max Sum Plus Plus
- 关于昨天和今天自己效率低下的总结
- Mac OS X 使用 rc.local 开机执行命令设置方法
- CentOS系统通过PXE实现批量无人值守安装
- 安卓 电话黑名单拦截