MiscUtil.java
上传用户:damzkj
上传日期:2022-01-07
资源大小:24k
文件大小:2k
源码类别:

P2P编程

开发平台:

Java

  1. package jxtamessenger.util;
  2. import java.net.InetAddress;
  3. import java.net.UnknownHostException;
  4. import java.util.ArrayList;
  5. public class MiscUtil {
  6. /** 在获取本机IP地址发生异常时返回该值 */
  7. public static final String IPADDRESS = "0.0.0.0";
  8.     public static String getIPAddress() {
  9. String ip = IPADDRESS;
  10. try {
  11. String ha = InetAddress.getLocalHost().getHostAddress();
  12. InetAddress[] a = InetAddress.getAllByName(ha);
  13. if (a.length == 1) {
  14. ip = a[0].getHostAddress();
  15. }
  16. } catch (UnknownHostException uhe) {
  17. }
  18. return ip;
  19.     }
  20.     
  21.     public static String getHostName() {
  22. String name = null;
  23. try
  24. {
  25. name = InetAddress.getLocalHost().getHostName();
  26. } catch(java.net.UnknownHostException uhe) {
  27. }
  28. return name;
  29.     }
  30.     
  31.     public static String getUserName() {
  32.         // TODO: Read user's configuration from property file, For simplicity, here use user's host name instead.
  33.         return getHostName();
  34.     }
  35.     
  36.     /**
  37.      * 由于DataOutputStream.writeUTF每次最多传输65535字节的数据,因此大于65535字节的数据需要手工拆分
  38.      * @param str 进行拆分的字符串
  39.      * @return 字符串数组,数组中的每个元素均刚好小于65535字节(最后一个元素除外)
  40.      * @see java.io.DataOutputStream.writeUTF
  41.      */
  42.     public static Object[] splitUTFString(String str) {
  43.      int strlen = str.length();
  44.      int utflen = 0;
  45.      int c;
  46.      int prev = 0;
  47.      ArrayList<String> list = new ArrayList<String>();
  48.     
  49.      /* use charAt instead of copying String to char array */
  50.      for (int i = 0; i < strlen;) {
  51.             c = str.charAt(i);
  52.     if ((c >= 0x0001) && (c <= 0x007F)) {
  53.      utflen++;
  54.     } else if (c > 0x07FF) {
  55.      utflen += 3;
  56.     } else {
  57.      utflen += 2;
  58.     }
  59.     
  60.     if(utflen > 65535) {
  61.      list.add(str.substring(prev, i));
  62.     
  63.      utflen = 0;
  64.      prev = i;
  65.     } else {
  66.      i++;
  67.     }
  68. }
  69.      list.add(str.substring(prev));
  70.     
  71.      return list.toArray();
  72.     }
  73. }