• java scoket (UDP通信模型)简易聊天室


    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    /**
     * 接收线程
     * 
     * @author xiaoduc
     *
     */
    public class ReceiveThread extends Thread {
    
        private DatagramSocket ds;
    
        public ReceiveThread(int port) {
            super();
            try {
                this.ds = new DatagramSocket(port);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        @Override
        public void run() {
            try {
                //创建byte数组
                byte[] buff=new byte[1024];
                //创建一个数据包对象
                DatagramPacket dp=new DatagramPacket(buff, 1024);
                //永真循环
                while(true){
                    ds.receive(dp);//接收消息
                    String str=new String(dp.getData(),0,dp.getLength());//得到数据
                    System.out.println("接收:"+str);//打印消息
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                ds.close();
            }
        }
    }
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    /**
     * 发送线程类
     * @author xiaoduc
     *
     */
    public class SendThread extends Thread{
        private DatagramSocket ds;
        private int sendPort;
        
        public SendThread(int port,int sendPort){
            super();
            this.sendPort=sendPort;
            try {
                this.ds=new DatagramSocket(port);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        @Override
        public void run() {
            try {
                //循环接收用户输入
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                String str=null;
                while((str=br.readLine())!=null){
                    //创建Datagrampacket对象
                    DatagramPacket dp=new DatagramPacket(str.getBytes(), 0,str.length(),InetAddress.getByName("localhost"),sendPort);
                    ds.send(dp);//发送数据
                    System.out.println("发送:"+str);//打印
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                ds.close();
            }
        }
    }
    public class Chat {
        public static void main(String[] args) {
            //启动发送线程
            new SendThread(1091, 1099).start();
            
        }
    }
    public class ReceiveChat {
        public static void main(String[] args) {
            //启动接收线程
            new ReceiveThread(1099).start();
        }
    }

  • 相关阅读:
    jmeter中设置线程数与设置集合点的区别
    在linux系统中如何通过shell脚本批量设置redis键值对
    服务器带宽上行与下行的区别
    性能测试之Jmeter插件安装
    sqlserver 启用邮箱服务
    sqlserver 自定义字符串分割函数.
    C# 重写思想
    CSS控制鼠标滑过时的效果
    js实现图片自动切换效果。
    SQL Server Management Studio 使用作业实现数据库备份
  • 原文地址:https://www.cnblogs.com/xiaoduc-org/p/5968921.html
Copyright © 2020-2023  润新知