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 | 
368 |
369 |
370 |
371 | 
372 |
373 | 
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 | 
528 |
529 |
530 |
531 | #### 快速重传证明
532 |
533 | 
534 |
535 |
536 |
537 | 查看Log文件发现1001的包是延迟到达的,观察发送端的日志RDTSender.log 如下
538 |
539 | 
540 |
541 | 在发送第seq为1001的包后,连续收到了三个ack为901的包(因为首次发送的1001的包延迟了),此时发送端执行快速重传,重新发送1001的包,之后接收到了ack值为1301的包
542 |
543 | #### 慢开始证明
544 |
545 | 
546 |
547 | #### 加法增大证明
548 |
549 | 
550 |
551 | #### 拥塞避免\乘法减小证明
552 |
553 | 
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 |
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 |
117 | Ƕ����ժҪ |
118 |
119 |
120 |
121 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | �ֶ�ժҪ |
137 |
138 |
139 |
140 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 | ���췽��ժҪ |
156 |
157 |
158 | ListenACK(Client client,
159 | com.ouc.tcp.RDT2_0.TCP_Sender sender)
160 |
161 |
162 | |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 | ����ժҪ |
173 |
174 |
175 |
176 | void |
177 | run()
178 |
179 |
180 | |
181 |
182 |
183 |
184 |
185 |
186 | ���� java.lang.Thread �̳еķ��� |
187 |
188 |
189 | 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 |
190 |
191 |
192 |
193 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 | ���췽����ϸ��Ϣ |
211 |
212 |
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 |
228 | ������ϸ��Ϣ |
229 |
230 |
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 |
254 |
255 |
267 | |
268 |
269 |
270 | |
271 |
272 |
273 |
274 |
275 | ��һ����
276 | ��һ���� |
277 |
278 | ���
279 | ���
280 |
287 |
290 |
291 |
292 | |
293 |
294 |
295 |
296 | ժҪ�� Ƕ�� | �ֶ� | ���췽�� | ���� |
297 |
298 | ��ϸ��Ϣ�� �ֶ� | ���췽�� | ���� |
299 |
300 |
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 |
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 |
117 | Ƕ����ժҪ |
118 |
119 |
120 |
121 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | �ֶ�ժҪ |
137 |
138 |
139 |
140 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 | ���췽��ժҪ |
156 |
157 |
158 | ListenPacket(Client client,
159 | com.ouc.tcp.RDT2_0.TCP_Receiver receiver)
160 |
161 |
162 | |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 | ����ժҪ |
173 |
174 |
175 |
176 | void |
177 | run()
178 |
179 |
180 | |
181 |
182 |
183 |
184 |
185 |
186 | ���� java.lang.Thread �̳еķ��� |
187 |
188 |
189 | 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 |
190 |
191 |
192 |
193 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 | ���췽����ϸ��Ϣ |
211 |
212 |
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 |
228 | ������ϸ��Ϣ |
229 |
230 |
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 |
254 |
255 |
267 | |
268 |
269 |
270 | |
271 |
272 |
273 |
274 |
275 | ��һ����
276 | ��һ���� |
277 |
278 | ���
279 | ���
280 |
287 |
290 |
291 |
292 | |
293 |
294 |
295 |
296 | ժҪ�� Ƕ�� | �ֶ� | ���췽�� | ���� |
297 |
298 | ��ϸ��Ϣ�� �ֶ� | ���췽�� | ���� |
299 |
300 |
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 |
37 |
38 |
50 | |
51 |
52 |
53 | |
54 |
55 |
56 |
57 |
58 | ��һ����
59 | ��һ���� |
60 |
61 | ���
62 | ���
63 |
70 |
73 |
74 |
75 | |
76 |
77 |
78 |
79 | ժҪ�� Ƕ�� | �ֶ� | ���췽�� | ���� |
80 |
81 | ��ϸ��Ϣ�� �ֶ� | ���췽�� | ���� |
82 |
83 |
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 |
114 | ���췽��ժҪ |
115 |
116 |
117 | TCP_Receiver_ADT()
118 |
119 |
120 | |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 | ����ժҪ |
131 |
132 |
133 |
134 | abstract void |
135 | deliver_data()
136 |
137 |
138 | ��������������
139 | ��dataQueue�����е�����д���ļ�. |
140 |
141 |
142 |
143 | void |
144 | initTCP_Receiver(com.ouc.tcp.RDT2_0.TCP_Receiver tcpReceiver)
145 |
146 |
147 | ��ʼ��TCP_Receiver����
148 | ����ListenPacket�����̣߳�ѭ����Ȿ�ؽ��ն˽��յ���DATA����. |
149 |
150 |
151 |
152 | abstract void |
153 | rdt_recv(TCP_PACKET recvPack)
154 |
155 |
156 | ���������յ�TCP���ݱ���ListenPacket�̻߳ص�������
157 | ���ȼ���յ������ݱ��Ƿ������δ��������ȡ�������е������ֶΣ���������Ӧ�Ļظ�ACK����. |
158 |
159 |
160 |
161 | abstract void |
162 | reply(TCP_PACKET replyPack)
163 |
164 |
165 | �������ظ�ACK���Ķ�
166 | ������õ�ACK���Ķ�ͨ�����ɿ������ŵ�����. |
167 |
168 |
169 |
170 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 | ���췽����ϸ��Ϣ |
188 |
189 |
190 |
191 |
192 | TCP_Receiver_ADT
193 |
194 | public TCP_Receiver_ADT()
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 | ������ϸ��Ϣ |
205 |
206 |
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 |
276 |
277 |
289 | |
290 |
291 |
292 | |
293 |
294 |
295 |
296 |
297 | ��һ����
298 | ��һ���� |
299 |
300 | ���
301 | ���
302 |
309 |
312 |
313 |
314 | |
315 |
316 |
317 |
318 | ժҪ�� Ƕ�� | �ֶ� | ���췽�� | ���� |
319 |
320 | ��ϸ��Ϣ�� �ֶ� | ���췽�� | ���� |
321 |
322 |
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 |
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 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 | ���췽��ժҪ |
148 |
149 |
150 | TCP_Sender_ADT()
151 |
152 |
153 | |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 | ����ժҪ |
164 |
165 |
166 |
167 | void |
168 | initTCP_Sender(com.ouc.tcp.RDT2_0.TCP_Sender tcpSender)
169 |
170 |
171 | ��ʼ��TCP_Sender����
172 | ����ListenACK�����̣߳�ѭ����Ȿ�ط��Ͷ˽��յ���ACK����. |
173 |
174 |
175 |
176 | abstract void |
177 | rdt_send(int dataIndex,
178 | int[] appData)
179 |
180 |
181 | �������ɿ����ͣ�Ӧ�ò���ã�
182 | ��װӦ�ò㴫�����������ݣ����������͵�TCP���ݱ�. |
183 |
184 |
185 |
186 | abstract void |
187 | recv(TCP_PACKET recvPack)
188 |
189 |
190 | ���������յ�ACK���ģ�ListenACK�̻߳ص�������
191 | �����յ���ACK�����ײ��е�ȷ�Ϻż���ackQueue���У���ʹ��У��������У���. |
192 |
193 |
194 |
195 | abstract void |
196 | udt_send(TCP_PACKET tcpPack)
197 |
198 |
199 | ���������ɿ�����
200 | ������õ�TCP���ݱ�ͨ�����ɿ������ŵ�����. |
201 |
202 |
203 |
204 | abstract void |
205 | waitACK()
206 |
207 |
208 | �������ȴ�������ACK����
209 | ����ֹͣ�ȴ�Э�飬���������ݱ�����ô˷����ȴ��Է��ظ���ACK����. |
210 |
211 |
212 |
213 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 | �ֶ���ϸ��Ϣ |
231 |
232 |
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 |
269 | ���췽����ϸ��Ϣ |
270 |
271 |
272 |
273 |
274 | TCP_Sender_ADT
275 |
276 | public TCP_Sender_ADT()
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 | ������ϸ��Ϣ |
287 |
288 |
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 |
375 |
376 |
388 | |
389 |
390 |
391 | |
392 |
393 |
394 |
395 |
396 | ��һ����
397 | ��һ���� |
398 |
399 | ���
400 | ���
401 |
408 |
411 |
412 |
413 | |
414 |
415 |
416 |
417 | ժҪ�� Ƕ�� | �ֶ� | ���췽�� | ���� |
418 |
419 | ��ϸ��Ϣ�� �ֶ� | ���췽�� | ���� |
420 |
421 |
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 |
37 |
38 |
50 | |
51 |
52 |
53 | |
54 |
55 |
56 |
57 |
58 | ��һ��
59 | ��һ�� |
60 |
61 | ���
62 | ���
63 |
70 |
73 |
74 |
75 | |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | �� com.ouc.tcp.client.Client
��ʹ��
85 |
86 |
87 |
97 |
98 |
99 |
100 |
106 |
107 |
108 |
109 |
122 |
123 |
124 |
125 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
175 | |
176 |
177 |
178 | |
179 |
180 |
181 |
182 |
183 | ��һ��
184 | ��һ�� |
185 |
186 | ���
187 | ���
188 |
195 |
198 |
199 |
200 | |
201 |
202 |
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