zoukankan      html  css  js  c++  java
  • ServiceDemo,ClientDemo Socket chat

    ServiceDemo:

    package com.demo.service;

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;

    public class ServiceDemo {




    public static void main(String[] args) {
    try {
    new ServiceDemo().service();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public void service() throws IOException{
    ServerSocket server=new ServerSocket(800);
    while(true){
    System.out.println("正在等待客户端连接");
    Socket so =server.accept();//监听客户端连接
    new Server(so).start();
    //System.out.println("客户端连接成功");

    }
    }

    class Server extends Thread{

    private Socket so;


    public Server(Socket so) {

    this.so = so;
    }


    @Override
    public void run() {
    InputStream in=null;//in 接收
    OutputStream out=null;//out 发送

    try {
    in=so.getInputStream();
    out=so.getOutputStream();

    String str="你吃早餐了吗";
    out.write(str.getBytes());
    out.write(' ');
    out.flush();

    //接收客户端发送来的数据
    Scanner scan=new Scanner(in);
    while(true){
    //读取客户端发送过来的一行数据并去掉空格
    String sentStr=scan.nextLine().trim();
    if(sentStr.equals("我吃了")){
    out.write("你吃的什么".getBytes());
    out.write(' ');
    out.flush();
    }else if(sentStr.equals("吃的包子")){
    out.write("早餐还不错".getBytes());
    out.write(' ');
    out.flush();
    }else{
    out.write("你会不会聊天".getBytes());
    out.write(' ');
    out.flush();
    break;
    }
    }
    so.close();

    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }


    }

    ClientDemo  :

    package com.demo.client;

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;

    public class ClientDemo {

    public static void main(String[] args) {

    try {
    new ClientDemo().client();
    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }
    public void client() throws UnknownHostException, IOException{
    Socket so=new Socket("localhost",800);
    InputStream in=so.getInputStream();
    OutputStream out=so.getOutputStream();

    new Reader(out).start();
    new Writer(in).start();
    }

    //读取控制台,往服务器端写
    class Reader extends Thread{
    private OutputStream out;

    public Reader(OutputStream out) {
    super();
    this.out = out;
    }

    @Override
    public void run() {
    Scanner scan=new Scanner(System.in);
    while(true){
    String str=scan.nextLine().trim();
    try {
    out.write(str.getBytes());
    out.write(' ');
    out.flush();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }



    }

    //读取服务器端发送来的数据
    class Writer extends Thread{
    private InputStream in;


    public Writer(InputStream in) {
    super();
    this.in = in;
    }


    @Override
    public void run() {
    int x=0;
    try {
    while((x=in.read())!=-1){
    System.out.write(x);
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }


    }
    }

  • 相关阅读:
    获取设备信息
    获取Mac地址
    常用正则
    几个字段相同的纪录去重留下主键最小的一条纪录
    mysql查询数据库中包含某字段(列名)的所有表
    nginx反向代理
    Eureka参数配置项详解
    html5验证自适应
    synchronized对象解析
    多线程进行数据同步
  • 原文地址:https://www.cnblogs.com/yang-32/p/5712784.html
Copyright © 2011-2022 走看看