Skip to content

Commit 55ef801

Browse files
committed
push mal
1 parent dfcf76c commit 55ef801

File tree

1 file changed

+34
-28
lines changed

1 file changed

+34
-28
lines changed

rn3/src/filecopy/FileCopyClient.java

+34-28
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public class FileCopyClient extends Thread {
6464

6565
static DatagramSocket clientSocket;
6666

67-
static long sendbase = 1;
67+
static long sendbase = 0L;
6868
// ... ToDo
6969

7070
// Constructor
@@ -75,9 +75,9 @@ public FileCopyClient(String serverArg, String sourcePathArg, String destPathArg
7575
destPath = destPathArg;
7676
windowSize = Integer.parseInt(windowSizeArg);
7777
serverErrorRate = Long.parseLong(errorRateArg);
78-
total_rtt=0L;
79-
received_acks=0L;
80-
retransmit_packs=0L;
78+
total_rtt = 0L;
79+
received_acks = 0L;
80+
retransmit_packs = 0L;
8181

8282
}
8383

@@ -93,6 +93,7 @@ public void runFileCopyClient() throws IOException, InterruptedException {
9393
DatagramPacket packet = new DatagramPacket(pinit.getSeqNumBytesAndData(), pinit.getLen() + 8, address,
9494
SERVER_PORT);
9595
clientSocket.send(packet);
96+
sendbuffer.put(0L, pinit);
9697
while (true) {
9798
while (inputstream.available() != 0 && sendbuffer.size() < windowSize) {
9899
inputstream.read(buf);
@@ -149,8 +150,8 @@ public void timeoutTask(long seqNum) throws IOException {
149150
DatagramPacket pack = new DatagramPacket(fcp.getSeqNumBytesAndData(), fcp.getLen() + 8, address, SERVER_PORT);
150151
clientSocket.send(pack);
151152
retransmit_packs++;
152-
fcp.setTimestamp(System.nanoTime());
153-
startTimer(fcp);
153+
sendbuffer.get(seqNum).setTimestamp(System.nanoTime());
154+
startTimer(sendbuffer.get(seqNum));
154155
}
155156

156157
/**
@@ -201,48 +202,53 @@ public static void main(String argv[]) throws Exception {
201202
(new FileCopyClient(argv[0], argv[1], argv[2], argv[3], argv[4])).start();
202203
myClient.runFileCopyClient();
203204
}
204-
205-
public static void ack_plus(){
205+
206+
public static void ack_plus() {
206207
received_acks++;
207208
}
208-
public static void rtt_plus(long rtt){
209+
210+
public static void rtt_plus(long rtt) {
209211
total_rtt = total_rtt + rtt;
210212
}
211-
public static void sendbase_plus(){
213+
214+
public static void sendbase_plus() {
212215
sendbase++;
213216
}
214-
215-
216217

217218
@Override
218219
public void run() {
219220
try {
220221
byte[] data = new byte[FileCopyClient.UDP_PACKET_SIZE];
221222
while (true) {
223+
222224
DatagramPacket udpReceivePacket = new DatagramPacket(data, data.length);
223225
// Wait for data packet
224226
clientSocket.receive(udpReceivePacket);
225-
rtt = System.nanoTime() - timestamp;
226227
FCpacket ackpack = new FCpacket(udpReceivePacket.getData(), udpReceivePacket.getLength());
227228
long receivedSeqNumber = ackpack.getSeqNum();
228-
cancelTimer(sendbuffer.get(receivedSeqNumber));
229-
long packrtt = System.nanoTime() - sendbuffer.get(receivedSeqNumber).getTimestamp();
230-
rtt_plus(packrtt);
231-
computeTimeoutValue(packrtt);
232-
sendbuffer.get(receivedSeqNumber).setValidACK(true);
233-
if (sendbuffer.containsKey(receivedSeqNumber) && receivedSeqNumber == sendbase) {
234-
FileCopyClient.ack_plus();
235-
sendbuffer.remove(receivedSeqNumber);
236-
FileCopyClient.sendbase_plus();
237-
}
238-
while(sendbuffer.containsKey(sendbase) && sendbuffer.get(sendbase).isValidACK()) {
239-
FileCopyClient.ack_plus();
240-
sendbuffer.remove(receivedSeqNumber);
241-
FileCopyClient.sendbase_plus();
229+
System.out.println(receivedSeqNumber);
230+
if (sendbuffer.containsKey(receivedSeqNumber)) {
231+
cancelTimer(sendbuffer.get(receivedSeqNumber));
232+
long packrtt = System.nanoTime() - sendbuffer.get(receivedSeqNumber).getTimestamp();
233+
System.out.println(packrtt);
234+
rtt_plus(packrtt);
235+
computeTimeoutValue(packrtt);
236+
sendbuffer.get(receivedSeqNumber).setValidACK(true);
237+
if (receivedSeqNumber == sendbase) {
238+
FileCopyClient.ack_plus();
239+
sendbuffer.remove(receivedSeqNumber);
240+
FileCopyClient.sendbase_plus();
241+
while (sendbuffer.containsKey(sendbase) && sendbuffer.get(sendbase).isValidACK()) {
242+
FileCopyClient.ack_plus();
243+
sendbuffer.remove(receivedSeqNumber);
244+
FileCopyClient.sendbase_plus();
245+
246+
}
247+
}
242248
}
243249
}
244250
} catch (Exception e) {
245-
System.out.println(e);
251+
e.printStackTrace();
246252
}
247253
}
248254
}

0 commit comments

Comments
 (0)