From a9b54f58d6cacb8449f2eafd0f472e37f5db0821 Mon Sep 17 00:00:00 2001 From: cheney Date: Tue, 21 Apr 2026 09:19:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 5 + .idea/compiler.xml | 13 ++ .idea/encodings.xml | 7 + .idea/jarRepositories.xml | 40 ++++ .idea/misc.xml | 14 ++ .idea/vcs.xml | 6 + pom.xml | 47 +++++ readme.md | 8 + settings.xml | 24 +++ src/main/java/com/sunyard/GmApi.java | 197 ++++++++++++++++++ src/main/java/com/sunyard/TestGmApi.java | 62 ++++++ sunyard.properties | 2 + target/classes/com/sunyard/GmApi.class | Bin 0 -> 6573 bytes target/classes/com/sunyard/TestGmApi.class | Bin 0 -> 2016 bytes target/gmapi.jar | Bin 0 -> 6950 bytes target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 2 + .../compile/default-compile/inputFiles.lst | 2 + 18 files changed, 432 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 pom.xml create mode 100644 readme.md create mode 100644 settings.xml create mode 100644 src/main/java/com/sunyard/GmApi.java create mode 100644 src/main/java/com/sunyard/TestGmApi.java create mode 100644 sunyard.properties create mode 100644 target/classes/com/sunyard/GmApi.class create mode 100644 target/classes/com/sunyard/TestGmApi.class create mode 100644 target/gmapi.jar create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..10b731c --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..6c5ad07 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..0cf050b --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..132404b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..bc20acd --- /dev/null +++ b/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + + com.sunyard + gmapi + 1.0-SNAPSHOT + + + 1.8 + 1.8 + UTF-8 + + + + + + + + gmapi + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + com.sunyard.TestGmApi + + + + + + + \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..63ed896 --- /dev/null +++ b/readme.md @@ -0,0 +1,8 @@ +# 接口 +功能:将符合 ASN1 的请求包发送给待测服务器,并接收响应。实现类自行解决连接的创建和管理。ip 和端在配置文件中配置。 +TCP send/recv 协议:2字节len + 8字节0 + 2字节type + asn1Req +其中 len 为后续所有字节的长度 +其中 type 为 asn1Req 按 asn1 解析后 seq 中第二个字段。seq 中第一个字段是 int 类型的 version +类:com.sunyard.GmApi +返回:byte[] 响应包,recv 包的 asn1Resp 字段 +接口原型:public static byte[] senMsg(byte[] asn1Req) diff --git a/settings.xml b/settings.xml new file mode 100644 index 0000000..e44b44d --- /dev/null +++ b/settings.xml @@ -0,0 +1,24 @@ + + + + + + + + + + alimaven + aliyun maven + https://maven.aliyun.com/repository/public + central + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/sunyard/GmApi.java b/src/main/java/com/sunyard/GmApi.java new file mode 100644 index 0000000..8337429 --- /dev/null +++ b/src/main/java/com/sunyard/GmApi.java @@ -0,0 +1,197 @@ +package com.sunyard; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.util.Properties; + +public class GmApi { + private static String serverIp; + private static int serverPort; + + private static void loadConfig() { + try { + Properties props = new Properties(); + // Get current jar directory path + String jarPath = GmApi.class.getProtectionDomain().getCodeSource().getLocation().getPath(); + String configPath = new File(jarPath).getParent() + File.separator + "sunyard.properties"; + + // Try to load config file from jar directory + File configFile = new File(configPath); + if (configFile.exists()) { + props.load(new FileInputStream(configFile)); + System.out.println("Config loaded from: " + configPath); + } else { + // If config file not found, use default values + System.out.println("Config file not found, using default: IP=127.0.0.1, Port=8080"); + } + + serverIp = props.getProperty("server.ip", "127.0.0.1"); + serverPort = Integer.parseInt(props.getProperty("server.port", "8080")); + System.out.println("Config loaded: IP=" + serverIp + ", Port=" + serverPort); + } catch (Exception e) { + System.out.println("Failed to load config, using default: IP=127.0.0.1, Port=8080"); + e.printStackTrace(); + serverIp = "127.0.0.1"; + serverPort = 8080; + } + } + + public static byte[] sendMsg(byte[] asn1Req) { + // Reload config file every time sending message + loadConfig(); + System.out.println("Start sending message, request length: " + asn1Req.length); + + // Parse ASN1 request to get type field + int type = parseTypeFromAsn1(asn1Req); + System.out.println("Parsed ASN1 type: " + type); + + Socket socket = null; + DataOutputStream dos = null; + DataInputStream dis = null; + + try { + // Create connection with timeout + System.out.println("Connecting to server: " + serverIp + ":" + serverPort); + socket = new Socket(); + socket.connect(new InetSocketAddress(serverIp, serverPort), 5000); // 5s connection timeout + socket.setSoTimeout(5000); // 5s read timeout + + // Calculate total length + int totalLength = 8 + 2 + asn1Req.length; + System.out.println("Calculated total length: " + totalLength); + + // Build send data + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream dataOut = new DataOutputStream(baos); + + // Write 2 bytes len + dataOut.writeShort(totalLength); + // Write 8 bytes 0 + for (int i = 0; i < 8; i++) { + dataOut.writeByte(0); + } + // Write 2 bytes type + dataOut.writeShort(type); + // Write asn1Req + dataOut.write(asn1Req); + + byte[] sendData = baos.toByteArray(); + System.out.println("Send data length: " + sendData.length); + System.out.println("Send data hex: " + bytesToHex(sendData)); + + // Send data + dos = new DataOutputStream(socket.getOutputStream()); + dos.write(sendData); + dos.flush(); + System.out.println("Data sent successfully"); + + // Receive response + dis = new DataInputStream(socket.getInputStream()); + + // Read response length + int respLength = dis.readUnsignedShort(); + System.out.println("Received response length: " + respLength); + + // Read 8 bytes 0 + byte[] zeros = new byte[8]; + dis.readFully(zeros); + + // Read 2 bytes type + int respType = dis.readUnsignedShort(); + System.out.println("Received response type: " + respType); + + // Read asn1Resp + byte[] asn1Resp = new byte[respLength - 8 - 2]; + dis.readFully(asn1Resp); + System.out.println("Received asn1Resp length: " + asn1Resp.length); + + return asn1Resp; + + } catch (Exception e) { + System.out.println("Failed to send message"); + e.printStackTrace(); + return null; + } finally { + // Close resources + try { + if (dis != null) dis.close(); + if (dos != null) dos.close(); + if (socket != null) socket.close(); + System.out.println("Connection closed"); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public static String bytesToHex(byte[] bytes) { + if (bytes == null || bytes.length == 0) { + return ""; + } + StringBuilder sb = new StringBuilder(bytes.length * 2); + for (byte b : bytes) { + // 将 byte 转为无符号整数(0~255) + int val = b & 0xFF; + // 转为两位十六进制,不足两位补零 + sb.append(String.format("%02x", val)); + } + return sb.toString(); + } + + private static int parseTypeFromAsn1(byte[] asn1Data) { + try { + ByteArrayInputStream bais = new ByteArrayInputStream(asn1Data); + DataInputStream dis = new DataInputStream(bais); + + // Skip seq header + int seqTag = dis.read(); + int seqLength = readAsn1Length(dis); // 使用正确的长度读取方法 + System.out.println("ASN1 seq tag: " + seqTag + ", length: " + seqLength); + + // Skip first field (version, int type) + int versionTag = dis.read(); + int versionLength = readAsn1Length(dis); + dis.skip(versionLength); + System.out.println("Skipped version field: tag=" + versionTag + ", length=" + versionLength); + + // Read second field (type) + int typeTag = dis.read(); + int typeLength = readAsn1Length(dis); + int type = 0; + for (int i = 0; i < typeLength; i++) { + type = (type << 8) | (dis.read() & 0xFF); + } + + dis.close(); + return type; + + } catch (Exception e) { + System.out.println("Failed to parse ASN1"); + e.printStackTrace(); + return 0; + } + } + + private static int readAsn1Length(DataInputStream dis) throws IOException { + int length = dis.read(); + if (length < 128) { + // 短形式:直接返回长度值 + return length; + } else { + // 长形式:计算后续长度字节的数量 + int numBytes = length & 0x7F; + length = 0; + for (int i = 0; i < numBytes; i++) { + length = (length << 8) | (dis.read() & 0xFF); + } + return length; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/sunyard/TestGmApi.java b/src/main/java/com/sunyard/TestGmApi.java new file mode 100644 index 0000000..af98a22 --- /dev/null +++ b/src/main/java/com/sunyard/TestGmApi.java @@ -0,0 +1,62 @@ +package com.sunyard; + +public class TestGmApi { + public static void main(String[] args) { + // Mock ASN1 request data in hex format +// String hexAsn1Req = "30 82 01 35 " + +// "02 01 01 02 01 03 30 82 01 1A 02 03 02 02 01 02 " + +// "01 29 04 08 31 32 33 34 35 36 37 38 02 02 01 00 " + +// "04 82 01 00 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 00 01 02 03 04 05 06 07 08 09 0A 0B " + +// "0C 0D 0E 0F 18 0F 32 30 32 36 30 33 30 34 30 36 " + +// "30 30 33 36 5A"; +// +// // Convert hex string to byte array +// byte[] asn1Req = hexStringToByteArray(hexAsn1Req); + + byte[] asn1Req = new byte[]{48, 56, 2, 1, 0, 2, 1, 0, -96, 31, 4, 29, 67, 61, 99, 110, 44, 79, 61, 73, 78, 70, 79, 83, 69, 67, 44, 67, 78, 61, 115, 109, 50, 95, 110, 101, 116, 115, 105, 103, 110, 24, 15, 50, 48, 50, 54, 48, 52, 48, 56, 48, 57, 49, 48, 52, 48, 90}; + + System.out.println("Testing GmApi.sendMsg method"); + System.out.println("ASN1 request length: " + asn1Req.length); + byte[] response = GmApi.sendMsg(asn1Req); + + if (response != null) { + System.out.println("Response successful, response length: " + response.length); + } else { + System.out.println("Response failed"); + } + } + + private static byte[] hexStringToByteArray(String hexString) { + // Remove spaces and newlines + hexString = hexString.replaceAll("\\s+", ""); + + // Check if the length is even + if (hexString.length() % 2 != 0) { + throw new IllegalArgumentException("Hex string length must be even"); + } + + byte[] result = new byte[hexString.length() / 2]; + + for (int i = 0; i < hexString.length(); i += 2) { + String hexByte = hexString.substring(i, i + 2); + result[i / 2] = (byte) Integer.parseInt(hexByte, 16); + } + + return result; + } + + +} \ No newline at end of file diff --git a/sunyard.properties b/sunyard.properties new file mode 100644 index 0000000..637c78f --- /dev/null +++ b/sunyard.properties @@ -0,0 +1,2 @@ +server.ip=127.0.0.1 +server.port=8080 diff --git a/target/classes/com/sunyard/GmApi.class b/target/classes/com/sunyard/GmApi.class new file mode 100644 index 0000000000000000000000000000000000000000..4af23e29c58798b7eefb879287fa061a7e58a86a GIT binary patch literal 6573 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 literal 0 HcmV?d00001 diff --git a/target/classes/com/sunyard/TestGmApi.class b/target/classes/com/sunyard/TestGmApi.class new file mode 100644 index 0000000000000000000000000000000000000000..c1f209849ff26676f2d3d4435257ca902b5cbe14 GIT binary patch literal 2016 zcmZuxOIK4@7~LliZU{k+LBvPED1v!OL=Zu=7Oam*KxZ~0(Z970$b=grn=-=q?ur17 zAKeiI(IwEAui9$4Ra;ZdqPb=%foQ&7Hmw!2S@piRHv{fQ)e#uXcXU2S!!@&N3+zv< z=68Z9xXr3vnMW?9W!mcUF0qaEDr-tzohk6;mb7O`C#eR*;QmIaRO zj7QG0RK>LBo0V2g+3w}XWz}%2bvuNc0>jtT z$oI)*;()wD+^?w$R{*E?NvlhYCa`r z$kAB*qVZ=qmVUK`<6B5@JN+D)rOaO#dUJl7 z=b4@Jr|9u4Oi|S9reAk+j9mjC*+ssg1;oVzK9_Zj2nWZ-w-^;qFebi7LU%jf?kJ{l zmYrSXRhz*q1m#cQ9GMSudM13Y#S;VP^)HMI_^3S-_>(gcphP|uy%?R}!llL37IMMH zkLZ1YrBd|9Gkp4o-m+eX^8O1?aX1x=1@CR))^a))v`$L-94p@yzw!BEp4iX-{geLX zgG@5aCyOXw)fgr*iZgtor^(LZBKdX3>CJ7b9S82 Wzs{)#{@82uG9xiau{A3BQ2rkfy3;oR literal 0 HcmV?d00001 diff --git a/target/gmapi.jar b/target/gmapi.jar new file mode 100644 index 0000000000000000000000000000000000000000..dd010309d4b1765e5976efbd575145dcbf0cb6c5 GIT binary patch literal 6950 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 O&yR;=9tZ#D=>GsQg&|r1 literal 0 HcmV?d00001 diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..952a344 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=gmapi +groupId=com.sunyard +version=1.0-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..9919388 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,2 @@ +com\sunyard\TestGmApi.class +com\sunyard\GmApi.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..e9cb3cc --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,2 @@ +D:\workbench\gmapi\src\main\java\com\sunyard\TestGmApi.java +D:\workbench\gmapi\src\main\java\com\sunyard\GmApi.java