zoukankan      html  css  js  c++  java
  • 简单的聊天时范例(客户端)

    package j2se.core.net.chat;


    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;

    /**
    * 简单的聊天室范例(服务器端)
    */
    public class Server {

    public static void main(String[] args) throws IOException {
    ServerSocket server = new ServerSocket(8888);
    while (true) {
    final Socket socket = server.accept();
    Thread t1 = new Thread() {
    @Override
    public void run() {
    DataInputStream input;
    try {
    input = new DataInputStream(socket.getInputStream());
    while (true) {
    String s = input.readUTF();
    System.out.println("客户端说:" + s);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    };
    t1.start();

    Thread t2 = new Thread() {
    @Override
    public void run() {
    BufferedReader br = new BufferedReader(
    new InputStreamReader(System.in));
    try {
    DataOutputStream out = new DataOutputStream(
    socket.getOutputStream());
    while (true) {
    String s = br.readLine();
    out.writeUTF(s);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    };
    t2.start();
    }
    }

    }

    package j2se.core.net.chat;

    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.Socket;
    import java.net.UnknownHostException;

    /**
    * 简单的聊天时范例(客户端)
    */
    public class Client {

    public static void main(String[] args) throws UnknownHostException, IOException {
    final Socket s = new Socket("127.0.0.1", 8888);
    Thread t1 = new Thread() {
    @Override
    public void run() {
    DataInputStream input;
    try {
    input = new DataInputStream(s.getInputStream());
    while (true) {
    String s = input.readUTF();
    System.out.println("服务端说:" + s);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    };
    t1.start();

    Thread t2 = new Thread() {
    @Override
    public void run() {
    BufferedReader br = new BufferedReader(
    new InputStreamReader(System.in));
    try {
    DataOutputStream out = new DataOutputStream(s.getOutputStream());
    while (true) {
    String s = br.readLine();
    out.writeUTF(s);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    };
    t2.start();
    }

    }

  • 相关阅读:
    课时8:环绕通知
    课时7:后置通知、异常通知
    课时6::AOP、execution表达式、前置通知
    课时:5 使用注解实现声明式事务
    课时22::PageHelper分页插件
    课时21 :使用MyBatis实现批量操作
    课时4:特殊值的注入问题和各种类型的自动装配
    课时3:三种方式的依赖注入、给各种集合类型的属性注入
    课时2:解耦合发展史、控制反转、依赖注入
    课时1:Spring环境搭建、STS工具、第一个Spring程序
  • 原文地址:https://www.cnblogs.com/angel512/p/5868150.html
Copyright © 2011-2022 走看看