• UDP DataGramSocket 小案例


    package com.nio;
    
    import org.junit.Test;
    
    import java.io.IOException;
    import java.net.DatagramSocket;
    import java.net.InetSocketAddress;
    import java.nio.ByteBuffer;
    import java.nio.channels.DatagramChannel;
    import java.nio.channels.SelectionKey;
    import java.nio.channels.Selector;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.Scanner;
    
    /**
     * UDP  DataGramSocket 小案例
     */
    public class TestNonBlockingDatagramChannel {
      @Test
        public void send() throws Exception{
          DatagramChannel dc = DatagramChannel.open();
          dc.configureBlocking(false);
          ByteBuffer buf = ByteBuffer.allocate(1024);//分配缓存区
          Scanner scan = new Scanner(System.in);
          while (scan.hasNext()){
              String str=scan.next();
              buf.put((new Date().toString()+":
    "+str).getBytes());
              buf.flip();
              dc.send(buf,new InetSocketAddress("127.0.0.1",9898));
              buf.clear();
          }
          dc.close();
      }
      @Test
      public void receive() throws IOException {
          DatagramChannel dc = DatagramChannel.open();
          dc.configureBlocking(false);
          dc.bind(new InetSocketAddress(9898));
          Selector selector = Selector.open();
          dc.register(selector, SelectionKey.OP_READ);
          while (selector.select()>0){
              Iterator<SelectionKey> it = selector.selectedKeys().iterator();
              while (it.hasNext()){
                  SelectionKey sk = it.next();
                  if (sk.isReadable()){
                      ByteBuffer buf = ByteBuffer.allocate(1024);
                      dc.receive(buf);
                      buf.flip();
                      System.out.println(new String(buf.array(),0,buf.limit()));
                      buf.clear();
                  }
              }
              it.remove();
    
          }
      }
    }
    

      

    先启动服务端,然后再启动客户端,启动成功之后,在客户端中写信息,然后观察服务端的信息,就会发现服务端能够接收到客户端传递过来的信息。

     

  • 相关阅读:
    Intel CPU编号详解
    matplotlib(二)——matplotlib控制坐标轴第一个刻度到原点距离
    matplotlib(一)——matplotlib横轴坐标密集字符覆盖
    博客园定制页面(五)——使用自定义JS脚本(公告栏显示时间)
    PyCharm(二)——PyCharm打开本地项目不显示项目文件
    nohup命令
    URL是如何解析的
    Python 得到主机字节序
    Python 得到ISP地址
    亚马逊s3上传大文件Python
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/14423918.html
Copyright © 2020-2023  润新知