public void sendFile(string filePath) { filePackets = TCPCopycatPacketManager.FileToTCPCopycatPacket(@filePath); windowSize = 10; windowLowerbound = 25; windowHigherbound = windowLowerbound + windowSize; sequenceNumberOffset = 25; sendFilePackets(filePackets); }
public void ClientSocketReceivedPacketCallback(TCPCopycatPacket packet, IPEndPoint sender) { Console.WriteLine("Received Packet numbered: " + packet.header.sequenceNumber.ToString()); if (!packetReceived[GetClientSocketFromEndpoint(sender)].Contains(packet.header.sequenceNumber)) { if (packet.header.FIN == 1) { Console.WriteLine("Packet FIN received"); } filePacketList[GetClientSocketFromEndpoint(sender)].Add(packet); packetReceived[GetClientSocketFromEndpoint(sender)].Add(packet.header.sequenceNumber); } packet.header.acknowledgeNumber = packet.header.sequenceNumber + 1; TCPCopyCatController.sendMessageToEndPoint(GetClientSocketFromEndpoint(sender), sender, packet); /* * if (packet.header.acknowledgeNumber == 30) * { * Console.WriteLine("********** SENDING MULTIPLE TIME SAME PACKET *************"); * latency(250, 1251); * TCPCopyCatController.sendMessageToEndPoint(GetClientSocketFromEndpoint(sender), sender, packet); * latency(250, 1251); * TCPCopyCatController.sendMessageToEndPoint(GetClientSocketFromEndpoint(sender), sender, packet); * latency(250, 1251); * TCPCopyCatController.sendMessageToEndPoint(GetClientSocketFromEndpoint(sender), sender, packet); * }*/ /* * if (packet.header.acknowledgeNumber != 28) * { * TCPCopyCatController.sendMessageToEndPoint(GetClientSocketFromEndpoint(sender), sender, packet); * } * if (packet.header.acknowledgeNumber == 31) * { * Console.WriteLine("*** GoingTo send packet 30 ack ***"); * Thread.Sleep(10000); * packet.header.acknowledgeNumber = 28; * TCPCopyCatController.sendMessageToEndPoint(GetClientSocketFromEndpoint(sender), sender, packet); * Console.WriteLine("*** SENT PACKET ***"); * } */ if (packet.header.FIN == 1) { filePacketList[GetClientSocketFromEndpoint(sender)].Sort(delegate(TCPCopycatPacket a, TCPCopycatPacket b) { if (a.header.sequenceNumber < b.header.sequenceNumber) { return(-1); } return(1); }); TCPCopycatPacketManager.TCPCopycatPacketArrayToFile(@"./" + sender.Port.ToString(), filePacketList[GetClientSocketFromEndpoint(sender)].ToArray()); } }