zoukankan      html  css  js  c++  java
  • 多线程 聊天程序

    package Ltian;//服务器
    import java.net.ServerSocket;
    import java.net.Socket;

    public class L1 {
     public static void main(String[] args) {
      try{
       ServerSocket ss = new   ServerSocket(9898);
       Socket server = ss.accept();
      new Thread(new L3(server.getInputStream())).start();
      new Thread(new L4("服务器",server.getOutputStream())).start();
       
       
      }catch(Exception e) {
       
      }
     }
     private static void ServerSocket() {
      
      
     }
    }
    2.//客户端
    package Ltian;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class L2 {
     
      public static void main(String[] args) {
       try{
        Socket c = new   Socket("192.168.0.116",9898);
        
       new Thread(new L3(c.getInputStream())).start();
       new Thread(new L4("王情报",c.getOutputStream())).start();
        
        
       }catch(Exception e) {
        
       }
     }
    }
    三 //发送消息
    package Ltian;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    public class L3 implements Runnable{
          private InputStream is;
     @Override
     public void run() {
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      while(true) {
       String mess;
       try {
        mess = br.readLine();
        System.out.println(mess + " ");
       } catch (IOException e) {
        System.out.println("再见啊妹妹");
        break;
        
        
       }
      }
      
      
     }
     public L3(InputStream is) {
      super();
      this.is = is;
     }
     public L3() {
      super();
      
     }
     public InputStream getIs() {
      return is;
     }
     public void setIs(InputStream is) {
      this.is = is;
     }
     
      
     }
     四//接收消息
    package Ltian;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    public class L4 implements Runnable{
     private String from;
     private OutputStream os;
     public String getFrom() {
      return from;
     }
     public void setFrom(String from) {
      this.from = from;
     }
     public OutputStream getOs() {
      return os;
     }
     public void setOs(OutputStream os) {
      this.os = os;
     }
     @Override
     public void run() {
      PrintWriter out = new PrintWriter(os);
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      while(true){
       Scanner sc = new Scanner(System.in);
       String msg =  from + ":"+sc.nextLine()+"["+sdf.format(new Date())+"] ";
       out.print(msg);
       out.flush();
      }
      
     }
     public L4(String from, OutputStream os) {
      super();
      this.from = from;
      this.os = os;
     }
     public L4() {
      super();
      
     }
     
    }
  • 相关阅读:
    查询长事务和SQL执行等待间隔时间
    一条诡异的SQL
    查询表的使用空间和可用空间
    查询SQL Server存储过程的执行信息
    清理大批量数据例子
    sql server 清理日志存储过程
    BCP 实例
    SQL Server 查询Job中的存储过程
    下车扫描五次优化全过程
    empty、isset和is_null的比较
  • 原文地址:https://www.cnblogs.com/wangqianbao/p/13159937.html
Copyright © 2011-2022 走看看