zoukankan      html  css  js  c++  java
  • java 聊天 两个进程互相通信开两个线程

    简介

    RT

    code

    server

    
    package com.kuang;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    /**
     * Created by lee on 2021/4/1.
     */
    public class UdpServer {
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            Runnable r1 = new Runnable() { 	// 发送
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    try {
                        DatagramSocket ds = new DatagramSocket(9999);
                        String s = null;
                        System.out.print("输入:");
                        while ((s = br.readLine()) != null) {
                            DatagramPacket dp = new DatagramPacket(s.getBytes(), s.getBytes().length,
                                    InetAddress.getByName("127.0.0.1"), 10000);//广播
                            ds.send(dp);
                            if(s.equals("quit")) {
                                ds.close();
                                break;
                            }
    //						System.out.print("输入:");
                        }
    
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
    
            Runnable r2=new Runnable() {	//接收
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    try {
                        DatagramSocket ds=new DatagramSocket(10001);
                        byte[] buff=new byte[1024];
                        DatagramPacket dp=new DatagramPacket(buff,buff.length);
                        while(true) {
                            ds.receive(dp);
                            String s = new String(dp.getData(),0,dp.getLength());
                            String ip=dp.getAddress().getHostAddress();
                            int port=dp.getPort();
                            System.out.println("消息:"+ip+"   "+port+" : "+s);
                            if(s.equals("quit")) {
                                ds.close();
                                break;
                            }
                        }
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
    
            ExecutorService es= Executors.newFixedThreadPool(2);
            es.submit(r1);
            es.submit(r2);
    
        }//main
    }
    
    

    client

    package com.kuang;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    /**
     * Created by lee on 2021/4/1.
     */
    public class UdpClient {
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            Runnable r1 = new Runnable() { 	// 发送
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    try {
                        DatagramSocket ds = new DatagramSocket(10002);
                        String s = null;
                        System.out.print("输入:");
                        while ((s = br.readLine()) != null) {
                            DatagramPacket dp = new DatagramPacket(s.getBytes(), s.getBytes().length,
                                    InetAddress.getByName("127.0.0.1"), 10001);//广播
                            ds.send(dp);
                            if(s.equals("quit")) {
                                ds.close();
                                break;
                            }
    //						System.out.print("输入:");
                        }
    
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
    
            Runnable r2=new Runnable() {	//接收
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    try {
                        DatagramSocket ds=new DatagramSocket(10000);
                        byte[] buff=new byte[1024];
                        DatagramPacket dp=new DatagramPacket(buff,buff.length);
                        while(true) {
                            ds.receive(dp);
                            String s = new String(dp.getData(),0,dp.getLength());
                            String ip=dp.getAddress().getHostAddress();
                            int port=dp.getPort();
                            System.out.println("消息:"+ip+"   "+port+" : "+s);
                            if(s.equals("quit")) {
                                ds.close();
                                break;
                            }
                        }
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
    
            ExecutorService es= Executors.newFixedThreadPool(2);
            es.submit(r1);
            es.submit(r2);
    
        }//main
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    hadoop 2.5.1 、Hadoop 2.7 Hadoop 2.6
    二 JDK + mysql + yum + rpm
    一 SSH 无密码登陆 & Linux防火墙 & SELinux关闭
    ZooKeeper 配置注意事项 zoo.cfg
    ZooKeeper 特性
    分布式锁
    悲观锁和乐观锁
    windows上配置mysql主从复制
    C# 同步调用、异步调用、异步回调
    C#方法回调
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/14608146.html
Copyright © 2011-2022 走看看