TCP 客户端实现代码详解:三次握手、四次挥手、报文解析
这段代码是一个简单的 TCP 客户端实现,代码中的 Client 类定义了一个客户端对象,它包含了与服务器建立连接、发送消息、进行三次握手和四次挥手等操作的方法。\n\n1. 创建 Socket 对象:\n - 在构造方法中,使用指定的 ip 地址和端口号创建了一个 Socket 对象,并将其赋值给 client 变量。\n\n2. 构造 TCP 报文段:\n - 在类中定义了一些字符串变量,用于构造 TCP 报文段。这些变量包括 seq(序号)、SYN(请求同步)、ack(返回的确认号)、ACK(确认同步)和 fin(释放连接)等。\n\n3. 初始化 Socket:\n - 在构造方法中,通过调用 Socket 类 的构造方法创建了一个 Socket 对象,并指定了服务器的 ip 地址和端口号。然后调用 run 方法。\n\n4. 将 seq 取出并 +1 形成 ack:\n - seqTransferAck 方法将传入的字符串转换为整数,并将其加 1 后再转换为字符串。这个方法用于将 seq 取出并加 1 形成 ack。\n\n5. 客户端向服务器发送相关消息:\n - 在 run 方法中,创建了 DataInputStream 和 DataOutputStream 对象,并通过 client 对象的 getInputStream 和 getOutputStream 方法获取输入输出流。\n - 设置 seq、ack、SYN 和 ACK 的值。\n - 将要发送给服务器的数据写入到数据输出流中。\n\n6. 第二次握手:\n - secendhand 方法中,从服务器的输入流中读取了四个字符串,并将其存储在一个数组中。然后返回这个数组。\n - secendPrint 方法中,根据服务器返回的数据打印相关信息。\n - 第三次握手,设置 ACK、SYN、ack 的值,并将其写入到数据输出流中。\n\n7. 四次挥手:\n - fouthsend 方法中,生成一个随机数作为 seq,并将 fin 和 seq 写入到数据输出流中。\n - fifthhand 方法中,从服务器的输入流中读取了三个字符串,并将其存储在一个数组中。然后返回这个数组。\n - fifthPrint 方法中,根据服务器返回的数据打印相关信息。\n - sixthhand 方法中,从服务器的输入流中读取了三个字符串,并将其存储在一个数组中。然后返回这个数组。\n - sixthPrint 方法中,根据服务器返回的数据打印相关信息,并设置 RecACK4、Recseq4 和 Recack4 的值,并将其写入到数据输出流中。\n\n总的来说,这段代码是一个简单的 TCP 客户端实现,包括与服务器建立连接、发送消息、进行三次握手和四次挥手等操作。
原文地址: https://www.cveoy.top/t/topic/pNOV 著作权归作者所有。请勿转载和采集!