Filsender over UDP
HejJeg har fået som ugeopgave at lave en filsender med protokollen UDP. Det er såmen ikke forbindelsen der er noget galt med, men i min while løkke som sender pakker i passende størrelse til klienten, sender den hele bufferen afsted i den sidste løkke - hvor den kun burde at sende længden af det den har læst afsted fra bufferen... Hvor går det galt med min length variabel?
Koden til Sender er her:
public class Sender {
private static DatagramSocket s;
public void send(String host, int port, byte[] _buffer, int _length) throws IOException {
InetAddress recv = InetAddress.getByName(host);
DatagramPacket packet = new DatagramPacket(_buffer, _length, recv, port);
s.send(packet);
}
public static void main(String args[]){
String filename = args[0];
String receiver = args[1];
int port = Integer.parseInt(args[2]);
byte[] buffer = new byte[640];
int length = 0;
try {
s = new DatagramSocket();
FileInputStream reader = new FileInputStream(filename);
Sender sender = new Sender();
int i = 0;
while((length = reader.read(buffer)) != -1){
System.out.println(length);
sender.send(receiver, port, buffer, length);
String test = new String(buffer);
System.out.println(test);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
På forhånd tak og jeg håber i forstår spørgsmålet, som altså er: Hvorfor kommer sender den for meget i den sidste løkke gennemgang?
Hvis i er interesseret i at teste den på egenmaskine kan i hente dem her:
www.daimi.au.dk/~rauff/Sender.java
www.daimi.au.dk/~rauff/Receiver.java
/Kim
