📄 socketcommon.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 + -