├── .classpath ├── .gitignore ├── .idea ├── artifacts │ └── Receiver_jar.xml ├── compiler.xml ├── encodings.xml ├── inspectionProfiles │ └── Project_Default.xml ├── misc.xml ├── modules.xml ├── smartfox_info.xml ├── uiDesigner.xml └── workspace.xml ├── .project ├── .settings ├── org.eclipse.core.resources.prefs └── org.eclipse.jdt.core.prefs ├── Config.ini ├── ENCDA.tcp ├── Log.txt ├── RDTReceiver.log.lck ├── RDTSender.log.lck ├── README.assets ├── image-20191223161125937.png ├── image-20191223161205249.png ├── image-20191223161704766.png ├── image-20191223161726125.png ├── image-20191223163114136.png ├── image-20191223163146617.png ├── image-20191223163228958.png ├── image-20191230150022496.png ├── image-20191230150111108.png ├── image-20191230151530485.png ├── image-20191230151609802.png ├── image-20191230151629895.png ├── image-20191230152059682.png ├── image-20191230152128244.png ├── image-20191230153042424.png ├── image-20191230153502766.png ├── image-20191230153522060.png ├── image-20191230153547022.png ├── image-20191230153609879.png ├── image-20191230160122465.png ├── image-20191230160150636.png ├── image-20191230160210668.png ├── image-20191230190440537.png ├── image-20191230190629905.png ├── image-20191230190650435.png ├── image-20191230191418883.png ├── image-20191230191506395.png ├── image-20191230191628135.png ├── image-20191230191743045.png ├── image-20191230192735495.png ├── image-20191230192755701.png ├── image-20191230192902224.png ├── image-20191230192954200.png ├── image-20191230193014622.png └── image-20191230193050242.png ├── README.md ├── TCP_Test_2019.iml ├── bin ├── META-INF │ ├── MANIFEST.MF │ └── TCP_Test_2019.kotlin_module └── com │ └── ouc │ ├── RDTbyUDP │ └── README.md │ └── tcp │ └── test │ ├── Log.txt │ └── recvData.txt ├── doc ├── allclasses-frame.html ├── allclasses-noframe.html ├── com │ └── ouc │ │ └── tcp │ │ ├── app │ │ ├── App_Sender.html │ │ ├── RunServer.html │ │ ├── SystemStart.html │ │ ├── class-use │ │ │ ├── App_Sender.html │ │ │ ├── RunServer.html │ │ │ └── SystemStart.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html │ │ ├── client │ │ ├── Client.html │ │ ├── ListenACK.html │ │ ├── ListenPacket.html │ │ ├── TCP_Receiver_ADT.html │ │ ├── TCP_Sender_ADT.html │ │ ├── UDT_RetransTask.html │ │ ├── UDT_Timer.html │ │ ├── class-use │ │ │ ├── Client.html │ │ │ ├── ListenACK.html │ │ │ ├── ListenPacket.html │ │ │ ├── TCP_Receiver_ADT.html │ │ │ ├── TCP_Sender_ADT.html │ │ │ ├── UDT_RetransTask.html │ │ │ └── UDT_Timer.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html │ │ ├── config │ │ ├── Constant.html │ │ ├── SYS_INI.html │ │ ├── class-use │ │ │ ├── Constant.html │ │ │ └── SYS_INI.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html │ │ ├── message │ │ ├── MSG_STREAM.html │ │ ├── TCP_HEADER.html │ │ ├── TCP_PACKET.html │ │ ├── TCP_SEGMENT.html │ │ ├── class-use │ │ │ ├── MSG_STREAM.html │ │ │ ├── TCP_HEADER.html │ │ │ ├── TCP_PACKET.html │ │ │ └── TCP_SEGMENT.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html │ │ └── server │ │ ├── ForwardDelay.html │ │ ├── Server.html │ │ ├── TransLog.html │ │ ├── WriteLogFile.html │ │ ├── class-use │ │ ├── ForwardDelay.html │ │ ├── Server.html │ │ ├── TransLog.html │ │ └── WriteLogFile.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html ├── constant-values.html ├── deprecated-list.html ├── help-doc.html ├── index-files │ ├── index-1.html │ ├── index-10.html │ ├── index-11.html │ ├── index-12.html │ ├── index-13.html │ ├── index-14.html │ ├── index-2.html │ ├── index-3.html │ ├── index-4.html │ ├── index-5.html │ ├── index-6.html │ ├── index-7.html │ ├── index-8.html │ └── index-9.html ├── index.html ├── overview-frame.html ├── overview-summary.html ├── overview-tree.html ├── package-list ├── resources │ └── inherit.gif ├── serialized-form.html └── stylesheet.css ├── outputJar └── META-INF │ └── MANIFEST.MF ├── recvData.txt └── src ├── META-INF └── MANIFEST.MF └── com └── ouc ├── RDTbyUDP ├── README.md └── test │ ├── Packet.java │ ├── ReceiveWindow.java │ ├── Receiver.java │ ├── SendWindow.java │ ├── Sender.java │ └── Window.java └── tcp ├── RDP2_2 ├── CheckSum.java ├── Log.txt ├── TCP_Receiver.java ├── TCP_Sender.java ├── TestRun.java └── recvData.txt ├── RDT2_0 ├── CheckSum.java ├── Log.txt ├── TCP_Receiver.java ├── TCP_Sender.java ├── TestRun.java └── recvData.txt ├── RDT2_2 ├── CheckSum.java ├── Log.txt ├── TCP_Receiver.java ├── TCP_Sender.java ├── TestRun.java └── recvData.txt ├── RDT3_0 ├── CheckSum.java ├── Log.txt ├── TCP_Receiver.java ├── TCP_Sender.java ├── TestRun.java └── recvData.txt ├── RDT4_0 ├── CheckSum.java ├── Log.txt ├── ReceiveWindow.java ├── SendWindow.java ├── TCP_Receiver.java ├── TCP_Sender.java ├── TestRun.java └── recvData.txt └── test ├── CheckSum.java ├── Log.txt ├── ReceiveWindow.java ├── SendWindow.java ├── TCP_Receiver.java ├── TCP_Sender.java ├── TestRun.java └── recvData.txt /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | -------------------------------------------------------------------------------- /.idea/artifacts/Receiver_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/classes/artifacts/Receiver_jar 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 96 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/smartfox_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.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/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 26 | 27 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 1575889016197 408 | 431 | 432 | 433 | 434 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | TCP_Test_2019 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/com/ouc/tcp/test/CheckSum.java=UTF-8 3 | encoding//src/com/ouc/tcp/test/TCP_Receiver.java=UTF-8 4 | encoding//src/com/ouc/tcp/test/TCP_Sender.java=UTF-8 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.6 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.6 12 | -------------------------------------------------------------------------------- /Config.ini: -------------------------------------------------------------------------------- 1 | # Local IP_address can be obtained automatically 2 | 3 | # Server port 4 | servPort = 8008 5 | 6 | # Client ports 7 | localSenderPort = 9001 8 | localReceiverPort = 9002 9 | -------------------------------------------------------------------------------- /RDTReceiver.log.lck: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/RDTReceiver.log.lck -------------------------------------------------------------------------------- /RDTSender.log.lck: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/RDTSender.log.lck -------------------------------------------------------------------------------- /README.assets/image-20191223161125937.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191223161125937.png -------------------------------------------------------------------------------- /README.assets/image-20191223161205249.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191223161205249.png -------------------------------------------------------------------------------- /README.assets/image-20191223161704766.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191223161704766.png -------------------------------------------------------------------------------- /README.assets/image-20191223161726125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191223161726125.png -------------------------------------------------------------------------------- /README.assets/image-20191223163114136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191223163114136.png -------------------------------------------------------------------------------- /README.assets/image-20191223163146617.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191223163146617.png -------------------------------------------------------------------------------- /README.assets/image-20191223163228958.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191223163228958.png -------------------------------------------------------------------------------- /README.assets/image-20191230150022496.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230150022496.png -------------------------------------------------------------------------------- /README.assets/image-20191230150111108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230150111108.png -------------------------------------------------------------------------------- /README.assets/image-20191230151530485.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230151530485.png -------------------------------------------------------------------------------- /README.assets/image-20191230151609802.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230151609802.png -------------------------------------------------------------------------------- /README.assets/image-20191230151629895.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230151629895.png -------------------------------------------------------------------------------- /README.assets/image-20191230152059682.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230152059682.png -------------------------------------------------------------------------------- /README.assets/image-20191230152128244.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230152128244.png -------------------------------------------------------------------------------- /README.assets/image-20191230153042424.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230153042424.png -------------------------------------------------------------------------------- /README.assets/image-20191230153502766.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230153502766.png -------------------------------------------------------------------------------- /README.assets/image-20191230153522060.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230153522060.png -------------------------------------------------------------------------------- /README.assets/image-20191230153547022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230153547022.png -------------------------------------------------------------------------------- /README.assets/image-20191230153609879.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230153609879.png -------------------------------------------------------------------------------- /README.assets/image-20191230160122465.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230160122465.png -------------------------------------------------------------------------------- /README.assets/image-20191230160150636.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230160150636.png -------------------------------------------------------------------------------- /README.assets/image-20191230160210668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230160210668.png -------------------------------------------------------------------------------- /README.assets/image-20191230190440537.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230190440537.png -------------------------------------------------------------------------------- /README.assets/image-20191230190629905.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230190629905.png -------------------------------------------------------------------------------- /README.assets/image-20191230190650435.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230190650435.png -------------------------------------------------------------------------------- /README.assets/image-20191230191418883.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230191418883.png -------------------------------------------------------------------------------- /README.assets/image-20191230191506395.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230191506395.png -------------------------------------------------------------------------------- /README.assets/image-20191230191628135.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230191628135.png -------------------------------------------------------------------------------- /README.assets/image-20191230191743045.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230191743045.png -------------------------------------------------------------------------------- /README.assets/image-20191230192735495.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230192735495.png -------------------------------------------------------------------------------- /README.assets/image-20191230192755701.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230192755701.png -------------------------------------------------------------------------------- /README.assets/image-20191230192902224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230192902224.png -------------------------------------------------------------------------------- /README.assets/image-20191230192954200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230192954200.png -------------------------------------------------------------------------------- /README.assets/image-20191230193014622.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230193014622.png -------------------------------------------------------------------------------- /README.assets/image-20191230193050242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/README.assets/image-20191230193050242.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 计算机网络大作业报告 4 | 5 | [TOC] 6 | 7 | 8 | 9 | # 1. 结合代码和LOG文件分析针对每个项目举例说明解决效果。(1-10分) 10 | 11 | ## 一. RDT2.0 信道上可能出现位错 12 | 13 | ### 1.代码分析 14 | 15 | #### 1) 接收端 16 | 17 | ```java 18 | //检查校验码,生成ACK 19 | if(CheckSum.computeChkSum(recvPack) == recvPack.getTcpH().getTh_sum()) { 20 | //生成ACK报文段(设置确认号) 21 | tcpH.setTh_ack(recvPack.getTcpH().getTh_seq()); 22 | ackPack = new TCP_PACKET(tcpH, tcpS, recvPack.getSourceAddr()); 23 | tcpH.setTh_sum(CheckSum.computeChkSum(ackPack)); 24 | //回复ACK报文段 25 | reply(ackPack); 26 | 27 | if(recvPack.getTcpH().getTh_seq()!=sequence){ 28 | //将接收到的正确有序的数据插入data队列,准备交付 29 | dataQueue.add(recvPack.getTcpS().getData()); 30 | sequence=recvPack.getTcpH().getTh_seq(); 31 | //sequence++; 32 | }else{ 33 | System.out.println("收到重复包,重复seq:"+sequence); 34 | } 35 | 36 | }else{ 37 | System.out.println("校验失败"); 38 | tcpH.setTh_ack(-1); 39 | ackPack = new TCP_PACKET(tcpH, tcpS, recvPack.getSourceAddr()); 40 | tcpH.setTh_sum(CheckSum.computeChkSum(ackPack)); 41 | //回复ACK报文段 42 | reply(ackPack); 43 | } 44 | ``` 45 | 46 | 接收端:对于接收到每一个包,检查其校验和 47 | 48 | + 若校验和匹配,则返回一个ack值为**本次接收到的包的seq值**的包,并将本次接收到的包插入data队列准备交付; 49 | + 若校验和不匹配,则返回一个ack值为-1的包 50 | 51 | #### 2) 发送端 52 | 53 | ```java 54 | //循环检查确认号对列中是否有新收到的ACK 55 | while(true) { 56 | if(!ackQueue.isEmpty()){ 57 | int currentAck=ackQueue.poll(); 58 | System.out.println("CurrentAck: "+currentAck); 59 | if (currentAck == tcpPack.getTcpH().getTh_seq()){ 60 | System.out.println("Clear: "+tcpPack.getTcpH().getTh_seq()); 61 | //用于3.0: 62 | //timer.cancel(); 63 | break; 64 | }else{ 65 | System.out.println("Retransmit: "+tcpPack.getTcpH().getTh_seq()); 66 | udt_send(tcpPack); 67 | } 68 | } 69 | } 70 | ``` 71 | 72 | 发送端:每次发送一个包后,循环检查确认号对列中是否有新收到的ACK 73 | 74 | + 若新收到的ack等于刚刚发送包的seq,则结束本次循环,开始发送下一个包 75 | + 若接收到的ack值不为刚刚发送的seq,则重发之前发送的包,并继续等待ack 76 | 77 | ### 2.Log文件 78 | 79 | ![image-20191230150022496](README.assets/image-20191230150022496.png) 80 | 81 | ![image-20191230150111108](README.assets/image-20191230150111108.png) 82 | 83 | 分析日志文件可知,本次共有8个包发生了位错误(校验和匹配不成功),对于发生了位错误的包,接收端都马上进行了重发包,并且接收端成功接收到并返回对应ack包 84 | 85 | 86 | 87 | ## 二. RDT2.2 ACK包可能出现位错 88 | 89 | ### 1.代码分析 90 | 91 | #### 1) 接收端 92 | 93 | ```java 94 | //检查校验码,生成ACK 95 | if(CheckSum.computeChkSum(recvPack) == recvPack.getTcpH().getTh_sum()) { 96 | //生成ACK报文段(设置确认号) 97 | tcpH.setTh_ack(recvPack.getTcpH().getTh_seq()); 98 | ackPack = new TCP_PACKET(tcpH, tcpS, recvPack.getSourceAddr()); 99 | tcpH.setTh_sum(CheckSum.computeChkSum(ackPack)); 100 | //回复ACK报文段 101 | reply(ackPack); 102 | 103 | if(recvPack.getTcpH().getTh_seq()!=sequence){ 104 | //将接收到的正确有序的数据插入data队列,准备交付 105 | dataQueue.add(recvPack.getTcpS().getData()); 106 | sequence=recvPack.getTcpH().getTh_seq(); 107 | //sequence++; 108 | }else{ 109 | System.out.println("收到重复包,重复seq:"+sequence); 110 | } 111 | 112 | }else{ 113 | System.out.println("校验失败"); 114 | tcpH.setTh_ack(-1); 115 | ackPack = new TCP_PACKET(tcpH, tcpS, recvPack.getSourceAddr()); 116 | tcpH.setTh_sum(CheckSum.computeChkSum(ackPack)); 117 | //回复ACK报文段 118 | reply(ackPack); 119 | } 120 | ``` 121 | 122 | 123 | 124 | **接收端回复包中仅使用ACK,与RDT2.0的代码类似** 125 | 126 | + 接收方正确接收一个包后,发送ACK 127 | + 在ACK包中,接收方必须通过序号指明是对哪个数据包的确认 128 | 129 | **接收方需要记录上次接收的包的seq值,若与本次接收的相同,则不能将它插入data队列** 130 | 131 | #### 2) 发送端 132 | 133 | ```java 134 | //接收到ACK报文:检查校验和,将确认号插入ack队列;NACK的确认号为-1;3.0版本不需要修改 135 | public void recv(TCP_PACKET recvPack) { 136 | if(CheckSum.computeChkSum(recvPack)==recvPack.getTcpH().getTh_sum()){ 137 | System.out.println("Receive ACK Number: "+ recvPack.getTcpH().getTh_ack()); 138 | ackQueue.add(recvPack.getTcpH().getTh_ack()); 139 | System.out.println(); 140 | }else{ 141 | System.out.println("Receive Wrong ACK Number: "); 142 | ackQueue.add(-1); 143 | System.out.println(); 144 | } 145 | } 146 | ``` 147 | 148 | 发送端收到发生位错误的ack包时,认为接收方没有正确收到该包,故重复发送本次包 149 | 150 | ### 2.Log文件分析 151 | 152 | ![image-20191230152059682](README.assets/image-20191230152059682.png) 153 | 154 | 155 | 156 | ![image-20191230152128244](README.assets/image-20191230152128244.png) 157 | 158 | 159 | 160 | 分析Log文件可知,对于发送端发送的数据包发生的位错误(**WRONG NO_ACK**),接收端能够检测出并返回对应ack让接收端重发 161 | 162 | 对于接收端发生的ack包发生的位错误(**NO_ACK**),发送端也能检测出并进行包重发 163 | 164 | ## 三. RDT3.0 通道上可能出错和丢失数据 165 | 166 | ### 1.代码分析 167 | 168 | #### 1) 接收端 169 | 170 | 接收端代码与之前相同 171 | 172 | #### 2) 发送端 173 | 174 | ```java 175 | class My_UDT_RetransTask extends TimerTask { 176 | private Client senderClient; 177 | private TCP_PACKET reTransPacket; 178 | 179 | public My_UDT_RetransTask(Client client, TCP_PACKET packet){ 180 | this.senderClient = client; 181 | this.reTransPacket = packet; 182 | } 183 | 184 | @Override 185 | public void run() { 186 | System.out.println("超时重发包"); 187 | this.senderClient.send(this.reTransPacket); 188 | } 189 | } 190 | ``` 191 | 192 | 193 | 194 | ```java 195 | //用于3.0版本:设置计时器和超时重传任务 196 | timer = new UDT_Timer(); 197 | UDT_RetransTask reTrans = new UDT_RetransTask(client, tcpPack); 198 | 199 | //每隔3秒执行重传,直到收到ACK 200 | timer.schedule(reTrans, 3000, 3000); 201 | ``` 202 | 203 | 发送本次数据包后,开启一个计时器,三秒内若未收到ack则重发本次数据包 204 | 205 | ```java 206 | while(true) { 207 | if(!ackQueue.isEmpty()){ 208 | int currentAck=ackQueue.poll(); 209 | System.out.println("CurrentAck: "+currentAck); 210 | 211 | if (currentAck == tcpPack.getTcpH().getTh_seq()){ 212 | System.out.println("Clear: "+tcpPack.getTcpH().getTh_seq()); 213 | 214 | //用于3.0:停止等待时需关闭计时器 215 | System.out.println("关闭计时器"); 216 | timer.cancel(); 217 | break; 218 | }else{ 219 | System.out.println("Retransmit: "+tcpPack.getTcpH().getTh_seq()); 220 | udt_send(tcpPack); 221 | //break; 222 | } 223 | } 224 | } 225 | ``` 226 | 227 | 当收到本次数据包时,需要将该数据包对应的计时器关闭 228 | 229 | ### 2.Log文件分析 230 | 231 | ![image-20191230153502766](README.assets/image-20191230153502766.png) 232 | 233 | ![image-20191230153609879](README.assets/image-20191230153609879.png) 234 | 235 | ![image-20191230153522060](README.assets/image-20191230153522060.png) 236 | 237 | ![image-20191230153547022](README.assets/image-20191230153547022.png) 238 | 239 | 分析Log文件,当发生丢包时(**LOSS NO_ACK**),发送端会在3s后自动重发包 240 | 241 | 242 | 243 | ## 四. RDT4.0 选择响应协议 244 | 245 | ### 1.代码分析 246 | 247 | #### 1) 接收端 248 | 249 | ```java 250 | public void addRecvPacket(TCP_PACKET packet){ 251 | // 判断是否有序 252 | int seq=packet.getTcpH().getTh_seq(); 253 | if((seq==lastSaveSeq+lastLength)||lastSaveSeq==-1){ 254 | lastLength=packet.getTcpS().getData().length; 255 | lastSaveSeq=seq; 256 | waitWrite(packet); 257 | }else if(seq>lastSaveSeq){ 258 | System.out.println("缓存seq:"+seq+"到列表,last is:"+lastSaveSeq); 259 | recvContent.add(new Window(packet)); 260 | } 261 | } 262 | ``` 263 | 264 | 接收端对于每一个校验和正确的接收包,都进行应答 265 | 266 | + 若接收到的包的seq有序,则执行waitWrite()函数将其递交给上层 267 | + 若收到的包的seq失序,则缓存到一个有序集合recvContent里 268 | 269 | 270 | 271 | ```java 272 | public void waitWrite(TCP_PACKET packet){ 273 | int seq; 274 | 275 | File fw = new File("recvData.txt"); 276 | BufferedWriter writer; 277 | SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 278 | try { 279 | writer = new BufferedWriter(new FileWriter(fw, true)); 280 | Window window; 281 | int[] data=packet.getTcpS().getData(); 282 | for(int i = 0; i < data.length; i++) { 283 | writer.write(data[i] + "\n"); 284 | } 285 | writer.flush(); //清空输出缓存 286 | Iterator it=recvContent.iterator(); 287 | // 在缓存队列里看是否还有有序的包,一起向上递交 288 | while (it.hasNext()){ 289 | window=it.next(); 290 | seq=window.packet.getTcpH().getTh_seq(); 291 | data=window.packet.getTcpS().getData(); 292 | if(seq==lastSaveSeq+lastLength){// 判断是否有序 293 | lastLength=packet.getTcpS().getData().length; 294 | lastSaveSeq=seq; 295 | for(int i = 0; i < data.length; i++) { 296 | writer.write(data[i] + "\n"); 297 | } 298 | writer.flush(); //清空输出缓存 299 | it.remove(); 300 | } 301 | else{ 302 | // System.out.println("退出循环,当前seq为:"+seq+" last:"+lastSaveSeq); 303 | break; 304 | } 305 | } 306 | writer.close(); 307 | 308 | } catch (IOException e) { 309 | e.printStackTrace(); 310 | } 311 | } 312 | ``` 313 | 314 | waitWrite()函数功能: 将本次有序包递交给上层,并检查缓存队列里否还有有序的包,一起向上递交 315 | 316 | #### 2) 发送端 317 | 318 | ```java 319 | while (!sendWindow.continueSend()){ 320 | try { 321 | Thread.sleep(10); 322 | } catch (InterruptedException e) { 323 | e.printStackTrace(); 324 | } 325 | } 326 | ``` 327 | 328 | 发送端每发送一个包则判断当前窗口是否还有空闲,若有则发送下一个包,若无则等待窗口空闲.这里固定窗口大小为100 329 | 330 | 331 | 332 | ```java 333 | public void waitOvertime() { 334 | TimerTask dealOverTime = new TimerTask() { 335 | @Override 336 | public void run() { 337 | int index = startWindowIndex; 338 | boolean updateStart=true; 339 | Window window; 340 | while (index < endWindosIndex) { 341 | // 如果第index个包超时了 342 | window = sendContent.get(index); 343 | if(updateStart && window.ack){ 344 | startWindowIndex=index+1; 345 | logger.info("更新start值:"+startWindowIndex); 346 | }else if(!window.ack){ 347 | updateStart=false; 348 | if (TIMEOUTTIME < (System.currentTimeMillis() - window.getStartSendTime())) { 349 | // 它没有收到ack,则尝试重发 350 | sendWindow(window,false); 351 | } 352 | } 353 | index++; 354 | } 355 | } 356 | }; 357 | new Timer().schedule(dealOverTime, 0, 200); 358 | } 359 | ``` 360 | 361 | 发送端处理超时的包,从滑动窗口头开始逐个检查是否超时,如果有超时且未收到ack的包,则进行重发,若头部的有新的连续ack,则更新窗口头部的下标 362 | 363 | 364 | 365 | ### 2.Log文件分析 366 | 367 | ![image-20191230160122465](README.assets/image-20191230160122465.png) 368 | 369 | 370 | 371 | ![image-20191230160150636](README.assets/image-20191230160150636.png) 372 | 373 | ![image-20191230160210668](README.assets/image-20191230160210668.png) 374 | 375 | 分析Log文件,对于NOACK的包,都能在超时的时候进行重发包 376 | 377 | ## 五. 拥塞控制 378 | 379 | ### 1.代码分析 380 | 381 | #### 1) 接收端 382 | 383 | ```java 384 | public int addRecvPacket(TCP_PACKET packet){ 385 | int seq=packet.getTcpH().getTh_seq(); 386 | if(seq==lastSaveSeq+lastLength || lastSaveSeq==-1){ 387 | lastLength=packet.getTcpS().getData().length; 388 | lastSaveSeq=seq; 389 | contentList.add(packet); 390 | waitWrite(); 391 | logger.info("有序接收,缓存seq:"+seq+"到列表,返回ack:"+lastSaveSeq); 392 | }else if(seq>lastSaveSeq){ 393 | recvBuffer.add(packet); 394 | logger.info("失序接收,缓存seq:"+seq+"到列表,返回ack:"+lastSaveSeq); 395 | } 396 | return lastSaveSeq; 397 | } 398 | ``` 399 | 400 | 与选择响应协议一致,对于每一个校验和正确的接收包,都进行应答 401 | 402 | + 若接收到的包的seq有序,则执行waitWrite()函数将其递交给上层 403 | + 若收到的包的seq失序,则缓存到一个有序集合recvContent里 404 | 405 | 406 | 407 | #### 2) 发送端 408 | 409 | ```java 410 | void dealWithOvertime() { 411 | TimerTask dealOverTime = new TimerTask() { 412 | @Override 413 | public void run() { 414 | int index = startWindowIndex; 415 | Window window; 416 | while (index <= ackWindowIndex) { 417 | // 如果第index个包超时了 418 | window = sendContent.get(index); 419 | if (TIMEOUTTIME < (System.currentTimeMillis() - window.getStartSendTime())) { 420 | // 它没有收到ack,则尝试重发 421 | if (!window.isAck()) { 422 | sendWindow(sendContent.get(index),1); 423 | break; 424 | } 425 | } 426 | index++; 427 | } 428 | } 429 | }; 430 | new Timer().schedule(dealOverTime, 0, 1000); 431 | } 432 | ``` 433 | 434 | 发送端处理超时的包,从滑动窗口头开始逐个检查是否超时,如果有超时且未收到ack的包,则进行重发 435 | 436 | 437 | 438 | ```java 439 | public void recv(TCP_PACKET recvPack){ 440 | boolean isBadNet = false; 441 | Window window = null; 442 | int ackNum=recvPack.getTcpH().getTh_ack(); 443 | logger.info("接收到ack:"+ackNum); 444 | 445 | int ackIndex=indexMap.get(ackNum); 446 | if(ackIndex>=startWindowIndex){ 447 | // 如果收到的不是延迟到达的包,则处理 448 | int tempSeq; 449 | int index=startWindowIndex; 450 | 451 | // 当滑动窗口还有空间 452 | for (; index <=ackWindowIndex ; index++) { 453 | window=sendContent.get(index); 454 | tempSeq=window.packet.getTcpH().getTh_seq(); 455 | 456 | // 包里的ack 大于滑动窗口里Index下标对应包的窗口的话,说明前面的也收到了 457 | if (ackIndex >= indexMap.get(tempSeq)) { 458 | logger.info(getWindowInfo()+"接收到ackNum:"+tempSeq+" (大于当前)index为:"+index+"的窗口块已经ack"); 459 | window.setAck(true); 460 | } else { 461 | // 该窗口的ack数量+1 462 | window.setDuplicateAckNum(window.getDuplicateAckNum() + 1); 463 | 464 | // 如果该包收到3次ack时,说明网络拥塞 465 | if ((window.getDuplicateAckNum() >= MAX_Duplicate_NUM)&&(!window.isAck())) { 466 | isBadNet = true; 467 | } 468 | break; 469 | } 470 | } 471 | updateWindowSize(ackIndex); 472 | }else{ 473 | logger.warning("收到延迟ack包,ackIndex值:"+ackIndex); 474 | } 475 | 476 | if (isBadNet) { 477 | // 拥塞避免 如果有包被重复收到MAX_Duplicate_NUM次以上,说明网络不好,缩小窗口 478 | int oldSsthresh=ssthresh; 479 | ssthresh = Math.max((cwnd / 2),2); 480 | // TCP Tahoe方式 481 | // cwnd = 1; 482 | 483 | // TCP Reno方式 484 | cwnd=oldSsthresh+1;//快速回恢复 485 | 486 | logger.warning(String.format(getWindowInfo()+"网络拥挤,设置新门限:%d,阻塞窗口大小为:%d, 当前窗口范围(%d,%d),acknum=%d\n", ssthresh,cwnd,startWindowIndex,endWindosIndex,ackWindowIndex)); 487 | 488 | // 快速重传 489 | updateWindowSize(ackIndex); 490 | window.setDuplicateAckNum(0); 491 | sendWindow(window,2); 492 | 493 | }else { 494 | // 网络状况良好,增大滑动窗口 495 | cwnd=(cwnd <= ssthresh)?cwnd*2:cwnd+1;// 加法增大 496 | if(cwnd>MAX_Window_Size){ 497 | cwnd=MAX_Window_Size; 498 | } 499 | updateWindowSize(ackIndex); 500 | logger.info(String.format(getWindowInfo()+"网络良好,设置阻塞窗口大小:%d, 当前窗口范围(%d,%d),ackWindowIndex=%d\n", cwnd,startWindowIndex,endWindosIndex,ackWindowIndex)); 501 | 502 | } 503 | 504 | } 505 | ``` 506 | 507 | 对于一个到达的未出错的ack包(即校验和正确的包) 508 | 509 | 发送端先判断是否延迟到达的包(比较接收到的ack值和当前的滑动窗口左沿的ack来判断) 510 | 511 | + 若收到的不是延迟到达的包,则更新滑动窗口的左沿,并将ack值对应的窗口及其左边的窗口设置为已经ack,并将ack值对应的下一个窗口的DuplicateAckNum+1, 若此时该窗口的DuplicateAckNum大于等于3,说明此时网络环境差,则设置isBadNet为true,表示需要进行拥塞控制 512 | 513 | 514 | 515 | ##### 快速恢复\乘法减小 516 | 517 | 当isBadNet为true,进行拥塞避免, 窗口门限设置为当前窗口大小的1/2(**乘法减小**),窗口大小cwnd设置为原来的门限值+1(**Reno方式,快速恢复**), 并进行快速重传,发送接收端返回的ack对应的下一个窗口的包 518 | 519 | ##### 加法增大 520 | 521 | 当isBadNet为false时,网络良好, 增大滑动窗口, 当窗口值不大于门限值时,平方增大,大于门限值时,采用加法增大 522 | 523 | 524 | 525 | ### 2.Log文件分析 526 | 527 | ![image-20191230192735495](README.assets/image-20191230192735495.png) 528 | 529 | 530 | 531 | #### 快速重传证明 532 | 533 | ![image-20191230192755701](README.assets/image-20191230192755701.png) 534 | 535 | 536 | 537 | 查看Log文件发现1001的包是延迟到达的,观察发送端的日志RDTSender.log 如下 538 | 539 | ![image-20191230192902224](README.assets/image-20191230192902224.png) 540 | 541 | 在发送第seq为1001的包后,连续收到了三个ack为901的包(因为首次发送的1001的包延迟了),此时发送端执行快速重传,重新发送1001的包,之后接收到了ack值为1301的包 542 | 543 | #### 慢开始证明 544 | 545 | ![image-20191230192954200](README.assets/image-20191230192954200.png) 546 | 547 | #### 加法增大证明 548 | 549 | ![image-20191230193014622](README.assets/image-20191230193014622.png) 550 | 551 | #### 拥塞避免\乘法减小证明 552 | 553 | ![image-20191230193050242](README.assets/image-20191230193050242.png) 554 | 555 | 检测到网络拥挤时, 新门限的值为原来的窗口大小的1/2(原来窗口大小为39,故新门限为19);新的窗口大小设置为原来的门限大小+1(原来的门限大小为16,即新窗口大小为17). 556 | 557 | 下次接收到ack包且网络良好时,由于17小于门限19,故指数增大,新窗口大小为34 558 | -------------------------------------------------------------------------------- /TCP_Test_2019.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /bin/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: com.ouc.RDTbyUDP.test.Receiver 3 | 4 | -------------------------------------------------------------------------------- /bin/META-INF/TCP_Test_2019.kotlin_module: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /bin/com/ouc/RDTbyUDP/README.md: -------------------------------------------------------------------------------- 1 | ## 发送端 2 | 3 | 1. 选择一个目标地址和端口 4 | 2. 传入需要发送的内容(二进制) (传入的是byte数组) `Files.readAllBytes(Paths.get(filePath));` 5 | 6 | -------------------------------------------------------------------------------- /doc/allclasses-frame.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/allclasses-frame.html -------------------------------------------------------------------------------- /doc/allclasses-noframe.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/allclasses-noframe.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/App_Sender.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/App_Sender.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/RunServer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/RunServer.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/SystemStart.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/SystemStart.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/class-use/App_Sender.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/class-use/App_Sender.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/class-use/RunServer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/class-use/RunServer.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/class-use/SystemStart.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/class-use/SystemStart.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/package-frame.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/package-frame.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/package-summary.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/package-summary.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/package-tree.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/package-tree.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/app/package-use.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/app/package-use.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/Client.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/Client.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/ListenACK.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ListenACK 8 | 9 | 10 | 11 | 12 | 13 | 14 | 22 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 51 | 54 | 55 | 56 | 57 | 60 | 76 | 77 | 78 | 80 | 82 | 83 |
52 | 53 |
84 | 85 | 86 | 87 |
88 | 89 |

90 | 91 | com.ouc.tcp.client 92 |
93 | �� ListenACK

94 |
 95 | java.lang.Object
 96 |   �̳��� java.lang.Thread
 97 |       �̳��� com.ouc.tcp.client.ListenACK
 98 | 
99 |
100 |
������ʵ�ֵĽӿڣ�
Runnable
101 |
102 |
103 |
104 |
public class ListenACK
extends Thread
105 | 106 | 107 |

108 |


109 | 110 |

111 | 112 | 113 | 114 | 115 | 116 | 118 | 119 |
117 | Ƕ����ժҪ
120 |   121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 |
���� java.lang.Thread �̳е�Ƕ����/�ӿ�
Thread.State, Thread.UncaughtExceptionHandler
129 |   130 | 131 | 132 | 133 | 134 | 135 | 137 | 138 |
136 | �ֶ�ժҪ
139 |   140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 |
���� java.lang.Thread �̳е��ֶ�
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
148 |   149 | 150 | 151 | 152 | 153 | 154 | 156 | 157 | 158 | 163 | 164 |
155 | ���췽��ժҪ
ListenACK(Client client, 159 | com.ouc.tcp.RDT2_0.TCP_Sender sender) 160 | 161 |
162 |            
165 |   166 | 167 | 168 | 169 | 170 | 171 | 173 | 174 | 175 | 177 | 181 | 182 |
172 | ����ժҪ
176 |  voidrun() 178 | 179 |
180 |            
183 |   184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 |
���� java.lang.Thread �̳еķ���
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
192 |   193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 |
���� java.lang.Object �̳еķ���
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
201 |   202 |

203 | 204 | 205 | 206 | 207 | 208 | 209 | 211 | 212 |
210 | ���췽����ϸ��Ϣ
213 | 214 |

215 | ListenACK

216 |
217 | public ListenACK(Client client,
218 |                  com.ouc.tcp.RDT2_0.TCP_Sender sender)
219 |
220 |
221 | 222 | 223 | 224 | 225 | 226 | 227 | 229 | 230 |
228 | ������ϸ��Ϣ
231 | 232 |

233 | run

234 |
235 | public void run()
236 |
237 |
238 |
ָ���ߣ�
�ӿ� Runnable �е� run
���ǣ�
�� Thread �е� run
239 |
240 |
241 |
242 |
243 |
244 | 245 |
246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 268 | 271 | 272 | 273 | 274 | 277 | 293 | 294 | 295 | 297 | 299 | 300 |
269 | 270 |
301 | 302 | 303 | 304 |
305 | 306 | 307 | 308 | -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/ListenPacket.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ListenPacket 8 | 9 | 10 | 11 | 12 | 13 | 14 | 22 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 51 | 54 | 55 | 56 | 57 | 60 | 76 | 77 | 78 | 80 | 82 | 83 |
52 | 53 |
84 | 85 | 86 | 87 |
88 | 89 |

90 | 91 | com.ouc.tcp.client 92 |
93 | �� ListenPacket

94 |
 95 | java.lang.Object
 96 |   �̳��� java.lang.Thread
 97 |       �̳��� com.ouc.tcp.client.ListenPacket
 98 | 
99 |
100 |
������ʵ�ֵĽӿڣ�
Runnable
101 |
102 |
103 |
104 |
public class ListenPacket
extends Thread
105 | 106 | 107 |

108 |


109 | 110 |

111 | 112 | 113 | 114 | 115 | 116 | 118 | 119 |
117 | Ƕ����ժҪ
120 |   121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 |
���� java.lang.Thread �̳е�Ƕ����/�ӿ�
Thread.State, Thread.UncaughtExceptionHandler
129 |   130 | 131 | 132 | 133 | 134 | 135 | 137 | 138 |
136 | �ֶ�ժҪ
139 |   140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 |
���� java.lang.Thread �̳е��ֶ�
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
148 |   149 | 150 | 151 | 152 | 153 | 154 | 156 | 157 | 158 | 163 | 164 |
155 | ���췽��ժҪ
ListenPacket(Client client, 159 | com.ouc.tcp.RDT2_0.TCP_Receiver receiver) 160 | 161 |
162 |            
165 |   166 | 167 | 168 | 169 | 170 | 171 | 173 | 174 | 175 | 177 | 181 | 182 |
172 | ����ժҪ
176 |  voidrun() 178 | 179 |
180 |            
183 |   184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 |
���� java.lang.Thread �̳еķ���
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
192 |   193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 |
���� java.lang.Object �̳еķ���
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
201 |   202 |

203 | 204 | 205 | 206 | 207 | 208 | 209 | 211 | 212 |
210 | ���췽����ϸ��Ϣ
213 | 214 |

215 | ListenPacket

216 |
217 | public ListenPacket(Client client,
218 |                     com.ouc.tcp.RDT2_0.TCP_Receiver receiver)
219 |
220 |
221 | 222 | 223 | 224 | 225 | 226 | 227 | 229 | 230 |
228 | ������ϸ��Ϣ
231 | 232 |

233 | run

234 |
235 | public void run()
236 |
237 |
238 |
ָ���ߣ�
�ӿ� Runnable �е� run
���ǣ�
�� Thread �е� run
239 |
240 |
241 |
242 |
243 |
244 | 245 |
246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 268 | 271 | 272 | 273 | 274 | 277 | 293 | 294 | 295 | 297 | 299 | 300 |
269 | 270 |
301 | 302 | 303 | 304 |
305 | 306 | 307 | 308 | -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/TCP_Receiver_ADT.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | TCP_Receiver_ADT 8 | 9 | 10 | 11 | 12 | 13 | 14 | 22 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 51 | 54 | 55 | 56 | 57 | 60 | 76 | 77 | 78 | 80 | 82 | 83 |
52 | 53 |
84 | 85 | 86 | 87 |
88 | 89 |

90 | 91 | com.ouc.tcp.client 92 |
93 | �� TCP_Receiver_ADT

94 |
 95 | java.lang.Object
 96 |   �̳��� com.ouc.tcp.client.TCP_Receiver_ADT
 97 | 
98 |
99 |
100 |
public abstract class TCP_Receiver_ADT
extends Object
101 | 102 | 103 |

104 |


105 | 106 |

107 | 108 | 109 | 110 | 111 | 112 | 113 | 115 | 116 | 117 | 121 | 122 |
114 | ���췽��ժҪ
TCP_Receiver_ADT() 118 | 119 |
120 |            
123 |   124 | 125 | 126 | 127 | 128 | 129 | 131 | 132 | 133 | 135 | 140 | 141 | 142 | 144 | 149 | 150 | 151 | 153 | 158 | 159 | 160 | 162 | 167 | 168 |
130 | ����ժҪ
134 | abstract  voiddeliver_data() 136 | 137 |
138 |           ���󷽷����������� 139 | ��dataQueue�����е�����д���ļ�.
143 |  voidinitTCP_Receiver(com.ouc.tcp.RDT2_0.TCP_Receiver tcpReceiver) 145 | 146 |
147 |           ��ʼ��TCP_Receiver���� 148 | ����ListenPacket�����̣߳�ѭ����Ȿ�ؽ��ն˽��յ���DATA����.
152 | abstract  voidrdt_recv(TCP_PACKET recvPack) 154 | 155 |
156 |           ���󷽷������յ�TCP���ݱ���ListenPacket�̻߳ص������� 157 | ���ȼ���յ������ݱ��Ƿ������δ��������ȡ�������е������ֶΣ���������Ӧ�Ļظ�ACK����.
161 | abstract  voidreply(TCP_PACKET replyPack) 163 | 164 |
165 |           ���󷽷����ظ�ACK���Ķ� 166 | ������õ�ACK���Ķ�ͨ�����ɿ������ŵ�����.
169 |   170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 |
���� java.lang.Object �̳еķ���
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
178 |   179 |

180 | 181 | 182 | 183 | 184 | 185 | 186 | 188 | 189 |
187 | ���췽����ϸ��Ϣ
190 | 191 |

192 | TCP_Receiver_ADT

193 |
194 | public TCP_Receiver_ADT()
195 |
196 |
197 | 198 | 199 | 200 | 201 | 202 | 203 | 205 | 206 |
204 | ������ϸ��Ϣ
207 | 208 |

209 | initTCP_Receiver

210 |
211 | public void initTCP_Receiver(com.ouc.tcp.RDT2_0.TCP_Receiver tcpReceiver)
212 |
213 |
��ʼ��TCP_Receiver���� 214 |

����ListenPacket�����̣߳�ѭ����Ȿ�ؽ��ն˽��յ���DATA����.
215 | ��ʼ���ظ�ACK���ĵ��ײ�tcpH�������ֶ�tcpS. 216 |

217 |

218 |
������
tcpReceiver - ������TCP_Receiver����
219 |
220 |
221 |
222 | 223 |

224 | rdt_recv

225 |
226 | public abstract void rdt_recv(TCP_PACKET recvPack)
227 |
228 |
���󷽷������յ�TCP���ݱ���ListenPacket�̻߳ص������� 229 |

���ȼ���յ������ݱ��Ƿ������δ��������ȡ�������е������ֶΣ���������Ӧ�Ļظ�ACK����.
230 | �����յ�����ȷ��������ݲ���dataQueue���У�׼������. 231 |

232 |

233 |
������
recvPack - ��ListenPacket�߳����͵Ľ��յ������ݱ�
234 |
235 |
236 |
237 | 238 |

239 | deliver_data

240 |
241 | public abstract void deliver_data()
242 |
243 |
���󷽷����������� 244 |

��dataQueue�����е�����д���ļ�.
245 |

246 |

247 |
248 |
249 |
250 |
251 | 252 |

253 | reply

254 |
255 | public abstract void reply(TCP_PACKET replyPack)
256 |
257 |
���󷽷����ظ�ACK���Ķ� 258 |

������õ�ACK���Ķ�ͨ�����ɿ������ŵ�����.
259 | �������ݱ�ǰ��Ҫ����TCP�ײ��еĴ�����Ʊ�־eflag����ʹ��У���������У��Ͳ����´��.
260 | �ڷ��������һ�������client.send()�����������ݱ�. 261 |

262 |

263 |
������
replyPack - ׼���ظ���ACK���Ķ�
264 |
265 |
266 | 267 |
268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 290 | 293 | 294 | 295 | 296 | 299 | 315 | 316 | 317 | 319 | 321 | 322 |
291 | 292 |
323 | 324 | 325 | 326 |
327 | 328 | 329 | 330 | -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/TCP_Sender_ADT.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | TCP_Sender_ADT 8 | 9 | 10 | 11 | 12 | 13 | 14 | 22 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 51 | 54 | 55 | 56 | 57 | 60 | 76 | 77 | 78 | 80 | 82 | 83 |
52 | 53 |
84 | 85 | 86 | 87 |
88 | 89 |

90 | 91 | com.ouc.tcp.client 92 |
93 | �� TCP_Sender_ADT

94 |
 95 | java.lang.Object
 96 |   �̳��� com.ouc.tcp.client.TCP_Sender_ADT
 97 | 
98 |
99 |
100 |
public abstract class TCP_Sender_ADT
extends Object
101 | 102 | 103 |

104 |


105 | 106 |

107 | 108 | 109 | 110 | 111 | 112 | 114 | 115 | 116 | 118 | 122 | 123 | 124 | 126 | 130 | 131 | 132 | 134 | 138 | 139 |
113 | �ֶ�ժҪ
117 |  Queue<Integer>ackQueue 119 | 120 |
121 |            
125 |  Clientclient 127 | 128 |
129 |            
133 |  ArrayList<TCP_PACKET>sendBuffer 135 | 136 |
137 |            
140 |   141 | 142 | 143 | 144 | 145 | 146 | 148 | 149 | 150 | 154 | 155 |
147 | ���췽��ժҪ
TCP_Sender_ADT() 151 | 152 |
153 |            
156 |   157 | 158 | 159 | 160 | 161 | 162 | 164 | 165 | 166 | 168 | 173 | 174 | 175 | 177 | 183 | 184 | 185 | 187 | 192 | 193 | 194 | 196 | 201 | 202 | 203 | 205 | 210 | 211 |
163 | ����ժҪ
167 |  voidinitTCP_Sender(com.ouc.tcp.RDT2_0.TCP_Sender tcpSender) 169 | 170 |
171 |           ��ʼ��TCP_Sender���� 172 | ����ListenACK�����̣߳�ѭ����Ȿ�ط��Ͷ˽��յ���ACK����.
176 | abstract  voidrdt_send(int dataIndex, 178 | int[] appData) 179 | 180 |
181 |           ���󷽷����ɿ����ͣ�Ӧ�ò���ã� 182 | ��װӦ�ò㴫�����������ݣ����������͵�TCP���ݱ�.
186 | abstract  voidrecv(TCP_PACKET recvPack) 188 | 189 |
190 |           ���󷽷������յ�ACK���ģ�ListenACK�̻߳ص������� 191 | �����յ���ACK�����ײ��е�ȷ�Ϻż���ackQueue���У���ʹ��У��������У���.
195 | abstract  voidudt_send(TCP_PACKET tcpPack) 197 | 198 |
199 |           ���󷽷������ɿ����� 200 | ������õ�TCP���ݱ�ͨ�����ɿ������ŵ�����.
204 | abstract  voidwaitACK() 206 | 207 |
208 |           ���󷽷����ȴ�������ACK���� 209 | ����ֹͣ�ȴ�Э�飬���������ݱ�����ô˷����ȴ��Է��ظ���ACK����.
212 |   213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 |
���� java.lang.Object �̳еķ���
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
221 |   222 |

223 | 224 | 225 | 226 | 227 | 228 | 229 | 231 | 232 |
230 | �ֶ���ϸ��Ϣ
233 | 234 |

235 | client

236 |
237 | public final Client client
238 |
239 |
240 |
241 |
242 |
243 | 244 |

245 | sendBuffer

246 |
247 | public ArrayList<TCP_PACKET> sendBuffer
248 |
249 |
250 |
251 |
252 |
253 | 254 |

255 | ackQueue

256 |
257 | public Queue<Integer> ackQueue
258 |
259 |
260 |
261 |
262 | 263 | 264 | 265 | 266 | 267 | 268 | 270 | 271 |
269 | ���췽����ϸ��Ϣ
272 | 273 |

274 | TCP_Sender_ADT

275 |
276 | public TCP_Sender_ADT()
277 |
278 |
279 | 280 | 281 | 282 | 283 | 284 | 285 | 287 | 288 |
286 | ������ϸ��Ϣ
289 | 290 |

291 | initTCP_Sender

292 |
293 | public void initTCP_Sender(com.ouc.tcp.RDT2_0.TCP_Sender tcpSender)
294 |
295 |
��ʼ��TCP_Sender���� 296 |

����ListenACK�����̣߳�ѭ����Ȿ�ط��Ͷ˽��յ���ACK����.
297 | ��ʼ��������TCP���ݱ����ײ�tcpH�������ֶ�tcpS. 298 |

299 |

300 |
������
tcpSender - ������TCP_Sender����
301 |
302 |
303 |
304 | 305 |

306 | rdt_send

307 |
308 | public abstract void rdt_send(int dataIndex,
309 |                               int[] appData)
310 |
311 |
���󷽷����ɿ����ͣ�Ӧ�ò���ã� 312 |

��װӦ�ò㴫�����������ݣ����������͵�TCP���ݱ�.
313 | �ڷ����ڲ������udt_send()�����������ݱ�������ѡ��Ϊÿ���ѷ��͵�δȷ�ϵ����ݱ�����UDT_Timer��ʱ������ 314 | �Լ���Ӧ��UDT_RetransTask�ش�����ʵ�ֳ�ʱ�ش�����. 315 |

316 |

317 |
������
dataIndex - Ӧ�ò�ָ����������ţ��ɵ�0�鿪ʼ
appData - Ӧ�ò㴫�ݵĵ�dataIndex������
318 |
319 |
320 |
321 | 322 |

323 | udt_send

324 |
325 | public abstract void udt_send(TCP_PACKET tcpPack)
326 |
327 |
���󷽷������ɿ����� 328 |

������õ�TCP���ݱ�ͨ�����ɿ������ŵ�����.
329 | �������ݱ�ǰ��Ҫ����TCP�ײ��еĴ�����Ʊ�־eflag����ʹ��У���������У��Ͳ����´��.
330 | �ڷ��������һ�������client.send()�����������ݱ�. 331 |

332 |

333 |
������
tcpPack - ׼�����͵�TCP���ݱ�
334 |
335 |
336 |
337 | 338 |

339 | recv

340 |
341 | public abstract void recv(TCP_PACKET recvPack)
342 |
343 |
���󷽷������յ�ACK���ģ�ListenACK�̻߳ص������� 344 |

�����յ���ACK�����ײ��е�ȷ�Ϻż���ackQueue���У���ʹ��У��������У���.
345 |

346 |

347 |
������
recvPack - ��ListenACK�߳����͵Ľ��յ������ݱ�
348 |
349 |
350 |
351 | 352 |

353 | waitACK

354 |
355 | public abstract void waitACK()
356 |
357 |
���󷽷����ȴ�������ACK���� 358 |

����ֹͣ�ȴ�Э�飬���������ݱ�����ô˷����ȴ��Է��ظ���ACK����.
359 | ��ѭ�����ackQueue�������Ƿ������յ���ACK�����б������Ӧ����. 360 |

361 |

362 |
363 |
364 |
365 | 366 |
367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 389 | 392 | 393 | 394 | 395 | 398 | 414 | 415 | 416 | 418 | 420 | 421 |
390 | 391 |
422 | 423 | 424 | 425 |
426 | 427 | 428 | 429 | -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/UDT_RetransTask.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/UDT_RetransTask.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/UDT_Timer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/UDT_Timer.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/class-use/Client.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | �� com.ouc.tcp.client.Client ��ʹ�� 8 | 9 | 10 | 11 | 12 | 13 | 14 | 22 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 51 | 54 | 55 | 56 | 57 | 60 | 76 | 77 |
52 | 53 |
78 | 79 | 80 | 81 |
82 |
83 |

84 | �� com.ouc.tcp.client.Client
��ʹ��

85 |
86 | 87 | 88 | 89 | 91 | 92 | 93 | 94 | 95 | 96 |
90 | ʹ�� Client �������
com.ouc.tcp.client  
97 |   98 |

99 | 100 | 101 | 102 | 104 | 105 |
103 | com.ouc.tcp.client �� Client ��ʹ��
106 |   107 |

108 | 109 | 110 | 111 | 112 | 113 | 114 | 116 | 120 | 121 |
����Ϊ Client �� com.ouc.tcp.client �е��ֶ�
115 |  ClientTCP_Sender_ADT.client 117 | 118 |
119 |            
122 |   123 |

124 | 125 | 126 | 127 | 128 | 129 | 130 | 135 | 136 | 137 | 142 | 143 | 144 | 149 | 150 |
��������Ϊ Client �� com.ouc.tcp.client �еĹ��췽��
ListenACK(Client client, 131 | com.ouc.tcp.RDT2_0.TCP_Sender sender) 132 | 133 |
134 |            
ListenPacket(Client client, 138 | com.ouc.tcp.RDT2_0.TCP_Receiver receiver) 139 | 140 |
141 |            
UDT_RetransTask(Client client, 145 | TCP_PACKET packet) 146 | 147 |
148 |            
151 |   152 |

153 |


154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 176 | 179 | 180 | 181 | 182 | 185 | 201 | 202 |
177 | 178 |
203 | 204 | 205 | 206 |
207 | 208 | 209 | 210 | -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/class-use/ListenACK.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/class-use/ListenACK.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/class-use/ListenPacket.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/class-use/ListenPacket.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/class-use/TCP_Receiver_ADT.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/class-use/TCP_Receiver_ADT.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/class-use/TCP_Sender_ADT.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/class-use/TCP_Sender_ADT.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/class-use/UDT_RetransTask.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/class-use/UDT_RetransTask.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/class-use/UDT_Timer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/class-use/UDT_Timer.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/package-frame.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/package-frame.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/package-summary.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/package-summary.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/package-tree.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/package-tree.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/client/package-use.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/client/package-use.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/config/Constant.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/config/Constant.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/config/SYS_INI.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/config/SYS_INI.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/config/class-use/Constant.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/config/class-use/Constant.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/config/class-use/SYS_INI.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/config/class-use/SYS_INI.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/config/package-frame.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/config/package-frame.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/config/package-summary.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/config/package-summary.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/config/package-tree.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/config/package-tree.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/config/package-use.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/config/package-use.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/MSG_STREAM.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/MSG_STREAM.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/TCP_HEADER.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/TCP_HEADER.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/TCP_PACKET.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/TCP_PACKET.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/TCP_SEGMENT.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/TCP_SEGMENT.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/class-use/MSG_STREAM.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/class-use/MSG_STREAM.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/class-use/TCP_HEADER.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/class-use/TCP_HEADER.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/class-use/TCP_PACKET.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/class-use/TCP_PACKET.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/class-use/TCP_SEGMENT.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/class-use/TCP_SEGMENT.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/package-frame.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/package-frame.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/package-summary.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/package-summary.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/package-tree.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/package-tree.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/message/package-use.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/message/package-use.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/ForwardDelay.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/ForwardDelay.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/Server.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/Server.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/TransLog.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/TransLog.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/WriteLogFile.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/WriteLogFile.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/class-use/ForwardDelay.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/class-use/ForwardDelay.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/class-use/Server.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/class-use/Server.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/class-use/TransLog.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/class-use/TransLog.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/class-use/WriteLogFile.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/class-use/WriteLogFile.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/package-frame.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/package-frame.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/package-summary.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/package-summary.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/package-tree.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/package-tree.html -------------------------------------------------------------------------------- /doc/com/ouc/tcp/server/package-use.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/com/ouc/tcp/server/package-use.html -------------------------------------------------------------------------------- /doc/constant-values.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/constant-values.html -------------------------------------------------------------------------------- /doc/deprecated-list.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/deprecated-list.html -------------------------------------------------------------------------------- /doc/help-doc.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/help-doc.html -------------------------------------------------------------------------------- /doc/index-files/index-1.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-1.html -------------------------------------------------------------------------------- /doc/index-files/index-10.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-10.html -------------------------------------------------------------------------------- /doc/index-files/index-11.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-11.html -------------------------------------------------------------------------------- /doc/index-files/index-12.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-12.html -------------------------------------------------------------------------------- /doc/index-files/index-13.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-13.html -------------------------------------------------------------------------------- /doc/index-files/index-14.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-14.html -------------------------------------------------------------------------------- /doc/index-files/index-2.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-2.html -------------------------------------------------------------------------------- /doc/index-files/index-3.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-3.html -------------------------------------------------------------------------------- /doc/index-files/index-4.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-4.html -------------------------------------------------------------------------------- /doc/index-files/index-5.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-5.html -------------------------------------------------------------------------------- /doc/index-files/index-6.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-6.html -------------------------------------------------------------------------------- /doc/index-files/index-7.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-7.html -------------------------------------------------------------------------------- /doc/index-files/index-8.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-8.html -------------------------------------------------------------------------------- /doc/index-files/index-9.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index-files/index-9.html -------------------------------------------------------------------------------- /doc/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/index.html -------------------------------------------------------------------------------- /doc/overview-frame.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/overview-frame.html -------------------------------------------------------------------------------- /doc/overview-summary.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/overview-summary.html -------------------------------------------------------------------------------- /doc/overview-tree.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/overview-tree.html -------------------------------------------------------------------------------- /doc/package-list: -------------------------------------------------------------------------------- 1 | com.ouc.tcp.app 2 | com.ouc.tcp.client 3 | com.ouc.tcp.config 4 | com.ouc.tcp.message 5 | com.ouc.tcp.server 6 | -------------------------------------------------------------------------------- /doc/resources/inherit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/resources/inherit.gif -------------------------------------------------------------------------------- /doc/serialized-form.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/serialized-form.html -------------------------------------------------------------------------------- /doc/stylesheet.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrTjming/OUC-Computer-Network-Experiment/d962d3a75b46420b9839b770faa654d75b0a4a65/doc/stylesheet.css -------------------------------------------------------------------------------- /outputJar/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: com.ouc.RDTbyUDP.test.Receiver 3 | Class-Path: junit-4.12.jar TCP_Win_TestSys.jar 4 | 5 | -------------------------------------------------------------------------------- /src/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: com.ouc.RDTbyUDP.test.Receiver 3 | 4 | -------------------------------------------------------------------------------- /src/com/ouc/RDTbyUDP/README.md: -------------------------------------------------------------------------------- 1 | ## 发送端 2 | 3 | 1. 选择一个目标地址和端口 4 | 2. 传入需要发送的内容(二进制) (传入的是byte数组) `Files.readAllBytes(Paths.get(filePath));` 5 | 6 | -------------------------------------------------------------------------------- /src/com/ouc/RDTbyUDP/test/Packet.java: -------------------------------------------------------------------------------- 1 | package com.ouc.RDTbyUDP.test; 2 | 3 | import java.io.Serializable; 4 | import java.util.Arrays; 5 | import java.util.zip.CRC32; 6 | 7 | public class Packet implements Serializable { 8 | public static int MAX_PACKET_LENGTH=1300;//1440 9 | byte[] data; 10 | int sequenceNumber; 11 | boolean isEnd; 12 | int ACK; 13 | long checkSum; 14 | 15 | public Packet(byte[] data, int sequenceNumber) { 16 | this(data,sequenceNumber,false); 17 | } 18 | 19 | public Packet(byte[] data, int sequenceNumber, boolean isEnd) { 20 | this.data = data; 21 | this.sequenceNumber = sequenceNumber; 22 | this.isEnd = isEnd; 23 | this.checkSum = calcCheckSum(); 24 | 25 | } 26 | 27 | public Packet(int sequenceNumber, int ACK) { 28 | this.sequenceNumber = sequenceNumber; 29 | this.ACK = ACK; 30 | } 31 | 32 | public byte[] getData() { 33 | return data; 34 | } 35 | 36 | public int getSequenceNumber() { 37 | return sequenceNumber; 38 | } 39 | 40 | public boolean isEnd() { 41 | return isEnd; 42 | } 43 | 44 | public int getACK() { 45 | return ACK; 46 | } 47 | 48 | public long getCheckSum() { 49 | return checkSum; 50 | } 51 | 52 | public void setData(byte[] data) { 53 | this.data = data; 54 | } 55 | 56 | public void setSequenceNumber(int sequenceNumber) { 57 | this.sequenceNumber = sequenceNumber; 58 | } 59 | 60 | public void setEnd(boolean end) { 61 | isEnd = end; 62 | } 63 | 64 | public void setACK(int ACK) { 65 | this.ACK = ACK; 66 | } 67 | 68 | public void setCheckSum(long checkSum) { 69 | this.checkSum = checkSum; 70 | } 71 | 72 | public long calcCheckSum(){ 73 | CRC32 crc=new CRC32(); 74 | crc.update(sequenceNumber); 75 | if(data!=null){ 76 | for (int i = 0; i