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

📄 socketcommon.java

📁 java支持的短信平台
💻 JAVA
字号:
package com.khan.util;

import java.io.*;
import java.net.*;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class SocketCommon {
  public SocketCommon() {
  }


  public static String IntFormat(int value, int len) {
    char[] mask = new char[len];
    for (int i = 0; i < mask.length; i++) {
      mask[i] = 0x30;
    }
    java.text.DecimalFormat df = new java.text.DecimalFormat(String.valueOf(mask)); ;
    return df.format(value);
  }

  public static String IntFormat(long value, int len) {
    char[] mask = new char[len];
    for (int i = 0; i < mask.length; i++) {
      mask[i] = 0x30;
    }
    java.text.DecimalFormat df = new java.text.DecimalFormat(String.valueOf(mask)); ;
    return df.format(value);
  }

  /**
   * 将一个字节数据转换成 '1F' 这样的对应16进制字符串
   * @param b byte 字节数据
   * @return String
   */
  public static String Byte2String(byte b) {
    char[] str = new char[2];
    str[0] = Byte2HexChar((byte) ((b >> 4) & 0x0F));
    str[1] = Byte2HexChar((byte) (b & 0x0F));
    return String.valueOf(str);
  }

  /**
   * 将一个10进制的数字转换成16进制的字符
   * @param value byte
   * @return char 否则返回对应的16进制字符,转换失败返回0
   */
  public static char Byte2HexChar(byte value) {
    char result = 0;
    switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
      result = (char) (value + 0x30);
      break;
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
      result = (char) (value + 0x37);
      break;
    }
    return result;
  }

  public static String toHexString(byte[] data) {
    String tmp = "";
    for (int i = 0; i < data.length; i++) {
      tmp = tmp + Byte2String(data[i]);
    }

    return tmp;
  }

  public static void PrintDataHex(byte[] data, String split) {
    if (data == null) {
      return;
    }
    for (int i = 0; i < data.length; i++) {
      System.out.print(split + Byte2String(data[i]));
    }
    System.out.println();
  }

  public static void PrintDataHex(byte[] data) {

    if (data == null) {
      return;
    }
    for (int i = 0; i < data.length; i++) {
      System.out.print("0x" + Byte2String(data[i]) + " ");
    }
    System.out.println();
  }

  // 将iSource转为长度为iArrayLen的byte数组,低位是低字节--见代码中举例
  // 若低位是高字节,只需for中从高到低递减,而非从低到高递增
  public static byte[] toByteArrayHigh(int iSource) {
    int iArrayLen = Integer.SIZE / 8;
    byte[] bLocalArr = new byte[iArrayLen];
    for (int i = 0; (i < 4) && (i < iArrayLen); i++) {
      bLocalArr[i] = (byte) (iSource >> 8 * i & 0xFF);
    }
    return bLocalArr;
  }


  public static byte[] toByteArrayLow(int iSource) {
    int iArrayLen = Integer.SIZE / 8;
    byte[] bLocalArr = new byte[iArrayLen];
    int j = 0;
    for (int i = iArrayLen - 1; i >= 0; i--) {
      bLocalArr[i] = (byte) ((iSource >> (8 * j++)) & 0xFF);
    }
    return bLocalArr;
  }


  public static byte[] toByteArray(int iSource) {
    return toByteArrayLow(iSource);
  }

  /*
      public static short htons(short value) {
          byte[] bt = new byte[2];
          bt[0] = (byte) ((value >> 8) & 0x00FF);
          bt[1] = (byte) (value & 0x00FF);
          return (short) (((bt[1] << 8) & 0xFF00) + (bt[0] & 0x00FF));
      }

      public static short ntohs(short value) {
          return htons(value);
      }

      public static int htonl(int value) {
          short[] sr = new short[2];
          sr[0] = (short) ((value >> 16) & 0x0000FFFF);
          sr[1] = (short) (value & 0x0000FFFF);

          sr[0] = htons(sr[0]);
          sr[1] = htons(sr[1]);
          return (int) (((sr[1] << 16) & 0xFFFF0000) + (sr[0] & 0x0000FFFF));
      }

      public static int ntohl(int value) {
          return htonl(value);
      }
   */



  /**
   * 将byte[2]转换成short int
   * @param data byte[]
   * @param offset int
   * @return short
   */
  public static short getWord(byte[] data, int offset) {
    if (offset < 0 || offset > (data.length - 1)) {
      return 0;
    }
    return (short) (((data[offset] << 8) & 0xFF00)
                    + (data[offset + 1] & 0x00FF));
  }


  public static void FillChar(byte[] data, byte value) {
    for (int i = 0; i < data.length; i++) {
      data[i] = value;
    }
  }

  /**
   * 将byte[4]转换成int
   * @param data byte[]
   * @param offset int
   * @return int
   */
  public static int getDWord(byte[] data, int offset) {
    if (offset < 0 || offset > (data.length - 1)) {
      return 0;
    }
    return (int) (((data[offset] << 24) & 0xFF000000)
                  + ((data[offset + 1] << 16) & 0x00FF0000)
                  + ((data[offset + 2] << 8) & 0x0000FF00)
                  + (data[offset + 3] & 0x000000FF));

  }


  static public void Send(Socket s, byte[] data) throws IOException {
    DataOutputStream dos = new DataOutputStream(s.getOutputStream());
    dos.write(data);

  }


  static public byte[] Receive(Socket s) throws IOException {
    byte[] data = null;
    DataInputStream dis = new DataInputStream(s.getInputStream());
    data = new byte[4096];
    FillChar(data, (byte) 0x0);
    dis.read(data);
    int length = getDWord(data, 0);
    byte[] result = new byte[length];
    System.arraycopy(data, 0, result, 0, result.length);
    return result;
  }

}

⌨️ 快捷键说明

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