zoukankan      html  css  js  c++  java
  • java Socket Udp聊天

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;

    public class UDPSendDemo2 {

     /**
      * @param args
      * @throws IOException
      */
     public static void main(String[] args) throws IOException {

      System.out.println("发送端启动......");
      /*
       * 创建UDP传输的发送端。
       * 思路:
       * 1,建立udp的socket服务。
       * 2,将要发送的数据封装到数据包中。
       * 3,通过udp的socket服务将数据包发送出去。
       * 4,关闭socket服务。
       */
      //1,udpsocket服务。使用DatagramSocket对象。
      DatagramSocket ds = new DatagramSocket(8888);
      
      
    //  String str = "udp传输演示:哥们来了!";
      BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
      String line = null;
      
      while((line=bufr.readLine())!=null){
       
       
       byte[] buf = line.getBytes();
       DatagramPacket dp =
         new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.100"),10000);
       ds.send(dp);
       
       if("886".equals(line))
        break;
      }
      
      //4,关闭资源。
      ds.close();
     }

    }

    package cn.itcast.net.p3.chat;

    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) {

        // 2,创建数据包。
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf, buf.length);

        // 3,使用接收方法将数据存储到数据包中。
        ds.receive(dp);// 阻塞式的。

        // 4,通过数据包对象的方法,解析其中的数据,比如,地址,端口,数据内容。
        String ip = dp.getAddress().getHostAddress();
        int port = dp.getPort();
        String text = new String(dp.getData(), 0, dp.getLength());
        
        System.out.println(ip + "::" + text);
        if(text.equals("886")){
         System.out.println(ip+"....退出聊天室");
        }

       }
      } catch (Exception e) {

      }

     }

    }

    package cn.itcast.net.p3.chat;

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;

    public class Send implements Runnable {

     private DatagramSocket ds;
     
     public Send(DatagramSocket ds){
      this.ds = ds;
     }
     
     @Override
     public void run() {
      
      try {
       BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
       String line = null;
       
       while((line=bufr.readLine())!=null){
        
        
        byte[] buf = line.getBytes();
        DatagramPacket dp =
          new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10001);
        ds.send(dp);
        
        if("886".equals(line))
         break;
       }
       
       ds.close();
      } catch (Exception e) {
      }
     }

    }

  • 相关阅读:
    网页结构树DOM
    网页设计之js
    css了解一下!!!
    Html !!!了解一下
    进程and线程and协程效率对比
    线程
    进程之生产者消费者模型(队列,管道,数据共享,进程池)
    进程之机制问题(锁,信号,事件)
    并发进程
    socket模块其他用法
  • 原文地址:https://www.cnblogs.com/flying607/p/3442932.html
Copyright © 2011-2022 走看看