Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.net.*;
- import java.security.*;
- public class Sender
- {
- private static final int PORT_NUMBER = 42730;
- //dragon.cs.uni.edu = 134.161.241.111
- private File clientfile;
- private String targethost;
- private int windowsize;
- private int timeout;
- private int payload;
- public Sender(File clientfile, String targethost, int windowsize, int timeout, int payload)
- {
- try
- {
- this.clientfile = clientfile;
- this.targethost = targethost;
- this.windowsize = windowsize;
- this.timeout = timeout;
- this.payload = payload;
- File file = new File("C:\\Program Files\\eclipse\\workspace\\Assignment\\test.txt");
- byte[] fileData = getBytesFromFile(); //convert file into bytes
- DatagramSocket sock = new DatagramSocket(PORT_NUMBER);
- //ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
- //DataOutputStream dos = new DataOutputStream(byteArray);
- int seqnum = 0; //initialize sequence number
- //byte[] buffReceive = new byte[512];
- byte[] buffSend = new byte[512];
- //checksum payload
- //MessageDigest md = MessageDigest.getInstance("MD5");
- //md.update(fileData);
- //byte[] hash = md.digest();
- //make packet[seq#, length, data, checksum]
- //dos.writeInt(seqnum);
- //dos.writeInt(fileData.length);
- //dos.write(fileData);
- //dos.write(hash);
- //buffSend = byteArray.toByteArray();
- while (true)
- {
- //increment sequence number
- seqnum++;
- Packet newpack = new Packet(fileData, seqnum);
- buffSend = newpack.digest();
- // read min(segment size, remaining file size)
- DatagramPacket dp = new DatagramPacket(buffSend, buffSend.length, InetAddress.getByName("dragon.cs.uni.edu"), PORT_NUMBER);
- sock.send(dp);
- //checksum payload
- //md.update(fileData);
- //hash = md.digest();
- //make packet[seq#, length, data, checksum]
- //dos.writeInt(seqnum);
- //dos.writeInt(fileData.length);
- //dos.write(fileData);
- //dos.write(hash);
- //buffSend = byteArray.toByteArray();
- //buffSend = newpack.digest();
- }
- }
- catch(Exception e)
- {
- System.out.println("Unable to set up sender.");
- System.exit(0);
- }
- }
- private byte[] getBytesFromFile() throws IOException
- {
- InputStream stream = new FileInputStream(clientfile);
- long length = clientfile.length();
- byte[] bytes = new byte[(int)length];
- int offset = 0;
- int numRead = 0;
- while (offset < bytes.length && (numRead=stream.read(bytes, offset, bytes.length-offset)) >= 0)
- {
- offset += numRead;
- }
- if (offset < bytes.length) {
- throw new IOException("Could not completely read file "+clientfile.getName());
- }
- stream.close();
- return bytes;
- }
- /**
- private void sendData(DatagramSocket sock, DatagramPacket packet)
- {
- InetAddress IPAddress = packet.getAddress();
- int port = packet.getPort();
- DatagramPacket sendPacket = new DatagramPacket ("Hello", 5, IPAddress, port);
- sock.send(sendPacket);
- }
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement