• udp聊天室--简易


    package 聊天;
                                                  /*一切随便消逝吧*/
    import java.net.DatagramSocket;
    import java.net.SocketException;
    
    public class ChatDemo {
    public static void main(String[] args) throws Exception {
    	
    	
    	
    	DatagramSocket send=new DatagramSocket();
    	DatagramSocket rece=new DatagramSocket(10001);
    	new Thread(new Send(send)).start();
    	new Thread(new Rece(rece)).start();
    }
    }
    /*总结
     * 第一步建立字节套服务。Socket
     * 第二封装包  datagrampack
     * 处理数据包
     * 结束
     * 
     * 
     * */
     
    

      

    package 聊天;

    /*
    * udp接收端 建立udp socket 创建数据包,用于存储接收到的数据。方便用数据包对象的方法解析这些数据
    * 使用socket服务的receive方法将接收到得数据储存到数据包中 通过数据包的方法解析数据包中德数据。 关闭资源
    *
    */

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    public class Rece implements Runnable {
    	private DatagramSocket ds;
    
    	public Rece(DatagramSocket ds) {
    
    		this.ds = ds;
    	}
    
    	@Override
    	public void run() {
    
    		try {
    			while (true)
    
    			{
    				byte[] buf = new byte[1024];
    				DatagramPacket dp = new DatagramPacket(buf, buf.length);
    				ds.receive(dp);
    				String text = new String(dp.getData(), 0, dp.getLength());
    				System.out.println(dp.getAddress().getHostAddress()+":::"+text);
    			}
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    }
    

      

    package 聊天;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;

    /*
    * 创建UDP传输的发送端 思路:建立udp的socket服务器 将要发送的数据封装到数据包中 通过udp的socket服务将数据包发送出去 关闭服务
    *
    */

    public class Send implements Runnable {
    	private DatagramSocket ds;
    
    	public Send(DatagramSocket ds) {
    
    		this.ds = ds;
    	}
    
    	@Override
    	public void run() {
    	
    
    		try {
    			BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    			String line = null;
    
    			while ((line = bf.readLine()) != null) {
    
    				byte[] buf = line.getBytes();
    				// 使用DatagramPacket封装数据
    				DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 10001);
    				ds.send(dp);
    				if("886".equals(line)){
    					break;
    				}
    			}
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			ds.close();
    			e.printStackTrace();
    		}
    
    	}
    
    }
    

      

    一万年太久,只争朝夕!
  • 相关阅读:
    python 编码问题
    关于网页划词翻译
    clang 编译 c++
    Java流(Stream)操作实例筛选、映射、查找匹配
    JAVA系列笔记十八之nohup实现后台运行程序
    VSCode汇总
    java jdk 国内下载镜像地址及安装
    LocalDate、LocalDateTime与timestamp、Date的转换
    List.sort()排序功能
    Java Array、List、Set互相转化
  • 原文地址:https://www.cnblogs.com/chaoba/p/6950457.html
Copyright © 2020-2023  润新知