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

📄 determinefragsize.java

📁 JGRoups源码
💻 JAVA
字号:
package org.jgroups.tests;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/** * Determine the fragmentation size of a system. Can be used offline, then set properties * FRAG.frag_size and NAKACK.max_xmit_size * @author Bela Ban Dec 11 * @author 2003 * @version $Id: DetermineFragSize.java,v 1.4 2005/05/30 16:15:11 belaban Exp $ */public class DetermineFragSize {    static int senseMaxFragSize() {        int upper=4096;        int lower=0;        int highest_failed=-1;        DatagramSocket sock;        byte[] buf;        DatagramPacket packet;        InetAddress local_addr;        final int num_iterations=15;        try {            sock=new DatagramSocket();            local_addr=InetAddress.getLocalHost();        }        catch(Exception ex) {            System.err.println("failed creating DatagramSocket: " + ex);            return lower;        }        for(int i=0; i < num_iterations && lower < upper; i++) { // iterations to approximate frag_size            try {                buf=new byte[upper];                // System.out.println("** upper=" + upper + " (lower=" + lower + ")");                packet=new DatagramPacket(buf, buf.length, local_addr, 9);                sock.send(packet);                lower=Math.max(lower, upper);                System.out.println("-- trying " + lower + " [OK]");                upper=upper * 2;                if(highest_failed > -1)                    upper=Math.min(highest_failed, upper);            }            catch(IOException io_ex) {                if(highest_failed > -1)                    highest_failed=Math.min(highest_failed, upper); // never exceed max_upper                else                    highest_failed=upper;                upper=(upper + lower) / 2;            }            catch(Throwable ex) {                ex.printStackTrace();                break;            }        }        return lower;    }    public static void main(String[] args) {        DatagramSocket sock;        DatagramPacket packet;        int size=0, frag_size=0;        byte[] buf;        try {            size=senseMaxFragSize();            System.out.println("-- fine tuning (starting at " + size + "):");            sock=new DatagramSocket();            for(; ;) {                buf=new byte[size];                packet=new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(), 9);                sock.send(packet);                // System.out.print(size + " ");                // System.out.println(size + " [OK]");                frag_size=size;                size++;            }        }        catch(Throwable t) {            // System.out.println(size + " [FAIL]");            // t.printStackTrace();        }        System.out.println("\n***** fragmentation size on your system is " + frag_size + " bytes *******\n");    }}

⌨️ 快捷键说明

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