diff --git a/server b/server new file mode 100644 index 0000000000000000000000000000000000000000..335c0ae865f9137bc97bd25c70bd30e2720fe9ec --- /dev/null +++ b/server @@ -0,0 +1,72 @@ +package com.talk.chat; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.net.Socket; +import java.util.Scanner; + +//implements是一个类实现一个接口用的关键字.实现一个接口,必须实现接口中的所有方法。 +//在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口, +public class Client implements Runnable{ + //定义一个socket套接字 s + private Socket s; + //抛出异常定义cilent方法 + public Client() throws IOException{ + //实例化s用来接收客户端的IP和端口,启动socket线程 + s = new Socket("10.0.53.32",8888); + //定义具体的运算类 + //Thread s = new Thread(this); + //s.start(); + new Thread(this).start(); + //接收服务器端的消息 + receive(); + } + + private void receive() throws IOException{ + //实例化sc 接收输入内容 + Scanner sc = new Scanner(System.in); + //PrintWriter 包装字节/字符窜/文件流,实例化pw发送客户端的内容 + PrintWriter pw = new PrintWriter(s.getOutputStream()); + //true 一直获取输入信息 + while (true){ + //实例化mes接收sc中的输入内容 + String mes = sc.next(); + //如果输入了 end 就退出 + if(mes.equalsIgnoreCase("end")){ + System.out.println("退出"); + return; + } + //pw.println(mes)把数据发送到文件,并换行 + pw.println(mes); + //刷新 + pw.flush(); + } + } + + //runnable 的run 方法 + @Override + public void run() { + try{ + //在Java中,能够读取一个字节序列的对象就称作一个输入流。 + //读取客户端输入的东西 用is接收 + InputStream is = s.getInputStream(); + //实例化sc接收客户端的东西 + Scanner sc = new Scanner(is); + //有东西就一直接收 + while (true){ + if(sc.hasNextLine()) + System.out.println("Server:" + sc.nextLine()); + + } + } catch (IOException e) { + //在命令行打印异常信息在程序中出错的位置及原因 + e.printStackTrace(); + } + + } + //启动client方法 + public static void main(String[] args) throws IOException{ + new Client(); + } +} +