Sender.java: package experiment2; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; /** * 除数:10011 * 发送的数据: 1101011011 * * 除数:1001 * 发送的数据:110110 * * 除数:10011 * 发送的数据:1101011011 */ public class Sender { // 菜单 public static void menu() { System.out.println("--------------------- 菜单 -------------------------"); System.out.println("----------------1. 正常数据帧的通信过程----------------"); System.out.println("----------------2. 错误帧的通信过程-------------------"); System.out.println("--------------- 3. 数据帧的丢失的通信过程---------------"); } public static void main(String[] args) { menu(); Scanner scan = new Scanner(System.in); try { // 1. 创建Socket连接到服务器的ip地址和端口号 Socket socket = new Socket("127.0.0.1", 8888); // 2. 获取输出流,用于向服务器发送数据 PrintWriter output = new PrintWriter(socket.getOutputStream(), true); // 3. 获取输入流,用于接收服务器的响应 BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); CyclicRedundancyCheck cyclicRedundancyCheck = new CyclicRedundancyCheck("10011"); System.out.println("系统提示:输入exit -> 退出客户端"); System.out.println("系统提示:输入close-> 关闭服务端"); int count = 0; while(true) { System.out.println("请选择菜单:"); int choose = scan.nextInt(); System.out.println("请输入要发送的二进制数据,目前准备发送第" + count + "帧");