├── .idea
├── .gitignore
├── encodings.xml
├── misc.xml
├── modules.xml
├── uiDesigner.xml
└── vcs.xml
├── Java Socket ARP.iml
├── README.md
├── map.ser
├── out
└── production
│ └── Java Socket ARP
│ ├── Interface
│ ├── ARPAnswerConstants.class
│ ├── ARPRequestConstants.class
│ ├── DataFrameConstants.class
│ └── HandShakeConstants.class
│ └── Processes
│ ├── AppendKeyValuePairToFile.class
│ ├── FileOperation.class
│ ├── Host$JTextAreaOutputStream$1.class
│ ├── Host$JTextAreaOutputStream.class
│ ├── Host$MyWindow$1.class
│ ├── Host$MyWindow$2.class
│ ├── Host$MyWindow.class
│ ├── Host.class
│ ├── I_ARP_Table.ser
│ ├── J_ARP_Table.ser
│ ├── MTable.ser
│ ├── MTable.txt
│ ├── NTable.ser
│ ├── Router$MyWindow$1.class
│ ├── Router$MyWindow.class
│ ├── Router.class
│ ├── RouterReadPipe.class
│ ├── RouterReadServer.class
│ ├── RouterTrans$1.class
│ ├── RouterTrans.class
│ ├── Switcher$JTextAreaOutputStream$1.class
│ ├── Switcher$JTextAreaOutputStream.class
│ ├── Switcher$MyWindow$1.class
│ ├── Switcher$MyWindow.class
│ ├── Switcher.class
│ ├── SwitcherMultiThreadProcess.class
│ ├── Table$1.class
│ ├── Table$2.class
│ ├── Table.class
│ └── map.ser
└── src
├── Interface
├── ARPAnswerConstants.java
├── ARPRequestConstants.java
├── DataFrameConstants.java
└── HandShakeConstants.java
└── Processes
├── AppendKeyValuePairToFile.java
├── FileOperation.java
├── Host.java
├── I_ARP_Table.ser
├── J_ARP_Table.ser
├── MTable.ser
├── MTable.txt
├── NTable.ser
├── Router.java
├── RouterReadPipe.java
├── RouterReadServer.java
├── RouterTrans.java
├── Switcher.java
├── SwitcherMultiThreadProcess.java
├── Table.java
└── map.ser
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 | -
9 |
10 |
11 | -
12 |
13 |
14 | -
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
29 | -
30 |
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 |
39 |
40 |
41 | -
42 |
43 |
44 |
45 |
46 | -
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 | -
72 |
73 |
74 | -
75 |
76 |
77 |
78 |
79 | -
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 |
93 |
94 | -
95 |
96 |
97 |
98 |
99 | -
100 |
101 |
102 | -
103 |
104 |
105 | -
106 |
107 |
108 | -
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
119 | -
120 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Java Socket ARP.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Java_Socket_ARP
2 | 计算机网络ARP模拟
3 | # Windows系统使用者注意:
4 | 本人使用的是MacOS,在运行时没有问题。但是在Windows系统上运行可能会出现BUG。
5 |
6 | Pleasure to have this source code helpful to anyone reading this.
7 |
8 | If helpful, plz give a free star🌟!:D
9 |
10 | If u have any question, plz contact me at countang@outlook.com
11 |
12 | Written by countang.
13 |
--------------------------------------------------------------------------------
/map.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/map.ser
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Interface/ARPAnswerConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Interface/ARPAnswerConstants.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Interface/ARPRequestConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Interface/ARPRequestConstants.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Interface/DataFrameConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Interface/DataFrameConstants.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Interface/HandShakeConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Interface/HandShakeConstants.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/AppendKeyValuePairToFile.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/AppendKeyValuePairToFile.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/FileOperation.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/FileOperation.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Host$JTextAreaOutputStream$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Host$JTextAreaOutputStream$1.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Host$JTextAreaOutputStream.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Host$JTextAreaOutputStream.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Host$MyWindow$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Host$MyWindow$1.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Host$MyWindow$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Host$MyWindow$2.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Host$MyWindow.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Host$MyWindow.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Host.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Host.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/I_ARP_Table.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/I_ARP_Table.ser
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/J_ARP_Table.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/J_ARP_Table.ser
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/MTable.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/MTable.ser
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/MTable.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/MTable.txt
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/NTable.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/NTable.ser
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Router$MyWindow$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Router$MyWindow$1.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Router$MyWindow.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Router$MyWindow.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Router.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Router.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/RouterReadPipe.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/RouterReadPipe.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/RouterReadServer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/RouterReadServer.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/RouterTrans$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/RouterTrans$1.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/RouterTrans.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/RouterTrans.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Switcher$JTextAreaOutputStream$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Switcher$JTextAreaOutputStream$1.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Switcher$JTextAreaOutputStream.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Switcher$JTextAreaOutputStream.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Switcher$MyWindow$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Switcher$MyWindow$1.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Switcher$MyWindow.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Switcher$MyWindow.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Switcher.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Switcher.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/SwitcherMultiThreadProcess.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/SwitcherMultiThreadProcess.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Table$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Table$1.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Table$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Table$2.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/Table.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/Table.class
--------------------------------------------------------------------------------
/out/production/Java Socket ARP/Processes/map.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/countang/Java_Socket_ARP/fefa3ca1ea8b44c4f4bd559e20b92e58489aa14f/out/production/Java Socket ARP/Processes/map.ser
--------------------------------------------------------------------------------
/src/Interface/ARPAnswerConstants.java:
--------------------------------------------------------------------------------
1 | package Interface;
2 |
3 | public interface ARPAnswerConstants {
4 | byte PACKET_TYPE = 2;
5 | byte DEST_MAC_LEN = 6;
6 | byte SOURCE_MAC_LEN = 6;
7 | byte DEST_IP_LEN = 4;
8 | byte SOURCE_IP_LEN = 4;
9 | }
10 |
--------------------------------------------------------------------------------
/src/Interface/ARPRequestConstants.java:
--------------------------------------------------------------------------------
1 | package Interface;
2 |
3 | public interface ARPRequestConstants {
4 | byte PACKET_TYPE = 1;
5 | byte DEST_MAC_LEN = 6;
6 | byte SOURCE_MAC_LEN = 6;
7 | byte DEST_IP_LEN = 4;
8 | byte SOURCE_IP_LEN = 4;
9 | }
10 |
--------------------------------------------------------------------------------
/src/Interface/DataFrameConstants.java:
--------------------------------------------------------------------------------
1 | package Interface;
2 |
3 | public interface DataFrameConstants {
4 | byte ARP_TYPE = 0;
5 | byte DEST_MAC_LEN = 6;
6 | byte SOURCE_MAC_LEN = 6;
7 | byte DEST_IP_LEN = 4;
8 | byte SOURCE_IP_LEN = 4;
9 | byte DATA_DEF_LEN = 2;
10 | byte DATA_LEN = 0;
11 |
12 |
13 |
14 |
15 |
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/src/Interface/HandShakeConstants.java:
--------------------------------------------------------------------------------
1 | package Interface;
2 |
3 | public interface HandShakeConstants {
4 | byte PACKET_TYPE = 3;
5 | byte INTERFFACE_SYM_LEN = 1;
6 | byte SOURCE_MAC_LEN = 6;
7 | }
8 |
--------------------------------------------------------------------------------
/src/Processes/AppendKeyValuePairToFile.java:
--------------------------------------------------------------------------------
1 | package Processes;
2 | import java.io.*;
3 | import java.util.HashMap;
4 | import java.util.Map;
5 |
6 | import java.io.*;
7 | import java.util.*;
8 |
9 | public class AppendKeyValuePairToFile {
10 | public static void main(String[] args) {
11 | String fileName = "src/Processes/map.ser";
12 | // 添加新的键值对
13 | appendKeyValuePairToFile("key3", "value4", fileName);
14 | appendKeyValuePairToFile("key5", "value5", fileName);
15 |
16 | // 读取HashMap
17 | HashMap map = readHashMapFromFile("src/Processes/map.ser");
18 | System.out.println(map);
19 | }
20 |
21 | public static void appendKeyValuePairToFile(String key, String value, String fileName) {
22 | HashMap map = readHashMapFromFile(fileName);
23 | map.put(key, value);
24 | writeHashMapToFile(map, fileName);
25 | // System.out.println("New key-value pair added to file.");
26 | }
27 |
28 | public static HashMap readHashMapFromFile(String fileName) {
29 | HashMap map = new HashMap<>();
30 | try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileName))) {
31 | map = (HashMap) ois.readObject();
32 | } catch (IOException | ClassNotFoundException e) {
33 | // System.out.println("Error reading HashMap from file: " + e.getMessage());
34 | }
35 | return map;
36 | }
37 |
38 | public static void writeHashMapToFile(HashMap map, String fileName) {
39 | try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fileName))) {
40 | oos.writeObject(map);
41 | } catch (IOException e) {
42 | System.out.println("Error writing HashMap to file: " + e.getMessage());
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/Processes/FileOperation.java:
--------------------------------------------------------------------------------
1 | package Processes;
2 | import java.io.*;
3 | import java.util.*;
4 |
5 | public class FileOperation {
6 | public static void writeObject(String path, String Interface, String MAC){
7 | try {
8 | Map map = new HashMap();
9 | map.put(Interface, MAC);
10 |
11 | List