zoukankan      html  css  js  c++  java
  • Udp实现简单的聊天程序

    在《UDP通讯协议》这篇文章中,简单的说明了Udp协议特征及如何Udp协议传输数据

    这里将用Udp协议技术,编写一个简单的聊天程序:

    //发送端:

    package com.shindo.java.udp;
    import java.io.*;
    import java.net.*;
    /**
     * 使用多线程技术封装发送端
     */
    public class UdpSendByThread implements Runnable {
    
        private DatagramSocket ds;
        public UdpSendByThread(DatagramSocket ds){
            this.ds = ds;
        }
        public void run(){
                //读取键盘录入
                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                //按行读取数据,并发送出去
                String line = null;
                try {
                    while((line = bufr.readLine()) != null){
                        if("byebye".equals(line)) break;
                        
                        byte[] buf = line.getBytes();
                        
                        DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),11011);
                        
                        ds.send(dp);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            
        }
    }

    //接收端:

    package com.shindo.java.udp;
    import java.io.*;
    import java.net.*;
    /**
     * 使用多线程技术封装接收端
     */
    public class UdpReceiveByThread implements Runnable{
        
        private DatagramSocket ds;
        public UdpReceiveByThread(DatagramSocket ds){
            this.ds = ds;
        }
        public void run(){
            try {
                while(true){
                    byte[] buf = new byte[1024];
                    DatagramPacket dp = new DatagramPacket(buf,buf.length);
                    
                    ds.receive(dp);
                    
                    String ip = dp.getAddress().getHostAddress();
                    System.out.println(ip + "..........isconnected");
                    
                    String data = new String(dp.getData(),0,dp.getLength());
                    System.out.println(data);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    启动类:

    package com.shindo.java.udp;
    import java.net.*;
    /**
     * 实现使用Udp协议通讯的简单聊天程序
     */
    public class ChatDemo {
        public static void main(String[] args) throws Exception{
            DatagramSocket ds = new DatagramSocket();
            DatagramSocket dsPort = new DatagramSocket(11011);
            
            new Thread(new UdpSendByThread(ds)).start();
            new Thread(new UdpReceiveByThread(dsPort)).start();
            
        }
    }
  • 相关阅读:
    架构、框架、模式和平台的区别
    Android逆向基础知识Smali
    Android-apktool反汇编异常-Input file (XXX) was not found or was not readable.
    Smali相关的基础知识点
    Android-apktool-就从此处开始反编译之旅
    程序员在开发各阶段专属表情包汇总
    如何完全掌握一门语言
    别转管理,十年程序员老鸟给新手的几条忠告(转)
    程序员增加收入的几种方法
    程序员成长历程的四个阶段
  • 原文地址:https://www.cnblogs.com/shindo/p/5297123.html
Copyright © 2011-2022 走看看