⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receivechannel.java

📁 《java网络编程精解》的源代码
💻 JAVA
字号:
import java.io.*;
import java.net.*;
import java.nio.*;
import java.nio.channels.*;
public class ReceiveChannel {
  public static void main(String args[])throws Exception {
    final int ENOUGH_SIZE=1024;
    final int SMALL_SIZE=4;
    
    boolean isBlocked=true;
    int size=ENOUGH_SIZE;
    
    if(args.length>0){
      int opt=Integer.parseInt(args[0]);
      switch(opt){
        case 1: isBlocked=true;size=ENOUGH_SIZE;break;
        case 2: isBlocked=true;size=SMALL_SIZE;break;
        case 3: isBlocked=false;size=ENOUGH_SIZE;break;
        case 4: isBlocked=false;size=SMALL_SIZE;break;
      }
    }   

    DatagramChannel channel= DatagramChannel.open();
    channel.configureBlocking(isBlocked);
    ByteBuffer buffer=ByteBuffer.allocate(size);
    DatagramSocket socket=channel.socket();
    SocketAddress localAddr=new InetSocketAddress(8000);
    socket.bind(localAddr);
    
    while(true){
      System.out.println("开始接收数据报");
      SocketAddress remoteAddr=channel.receive(buffer);
      if(remoteAddr==null){
        System.out.println("没有接收到数据报");
      }else{
        buffer.flip();
        System.out.println("接收到的数据报的大小为"+buffer.remaining());
      } 
      Thread.sleep(500);
    }
  }
}



/****************************************************
 * 作者:孙卫琴                                     *
 * 来源:<<Java网络编程精解>>                       *
 * 技术支持网址:www.javathinker.org                *
 ***************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -