quemen redes

This commit is contained in:
binlaab
2026-04-20 22:38:38 +02:00
parent aa8b7b30fb
commit 25bf19ee9c
15 changed files with 414 additions and 42 deletions

View File

@@ -10,7 +10,7 @@ public class PeerMessage {
public static final byte HASH_LENGTH = 40;
private byte opcode;
/*
@@ -18,6 +18,11 @@ public class PeerMessage {
* específicos para crear mensajes con otros campos, según sea necesario
*
*/
private boolean last;
private long fileSize;
private String fileHash;
private byte filenameLong;
private String filenameVal;
@@ -40,9 +45,49 @@ public class PeerMessage {
return opcode;
}
public boolean isLast() {
return last;
}
public void setLast(boolean last) {
this.last = last;
}
public boolean getLast() {
return last;
}
public long getFileSize() {
return fileSize;
}
public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}
public String getFileHash() {
return fileHash;
}
public void setFileHash(String fileHash) {
this.fileHash = fileHash;
}
public byte getFilenameLong() {
return filenameLong;
}
public void setFilenameLong(byte filenameLong) {
this.filenameLong = filenameLong;
}
public String getFilenameVal() {
return filenameVal;
}
public void setFilenameVal(String filenameVal) {
this.filenameVal = filenameVal;
}
/**
* Método de clase para parsear los campos de un mensaje y construir el objeto
@@ -65,6 +110,31 @@ public class PeerMessage {
PeerMessage message = new PeerMessage();
byte opcode = dis.readByte();
switch (opcode) {
case PeerMessageOps.OPCODE_REQUEST_PEER_FILES:
case PeerMessageOps.OPCODE_PEER_FILES_ERROR: break;
case PeerMessageOps.OPCODE_PEER_FILE: {
boolean last = false;
byte lastVal = dis.readByte();
if (lastVal == 1) {
last = true;
}
long fileSize = dis.readLong();
byte[] fileHash = new byte[HASH_LENGTH];
dis.readFully(fileHash);
byte filenameLong = dis.readByte();
byte[] filenameVal = new byte[filenameLong];
dis.readFully(filenameVal);
message.setLast(last);
message.setFileSize(fileSize);
message.setFileHash(new String(fileHash));
message.setFilenameLong(filenameLong);
message.setFilenameVal(new String(filenameVal));
}
@@ -87,6 +157,21 @@ public class PeerMessage {
dos.writeByte(opcode);
switch (opcode) {
case PeerMessageOps.OPCODE_REQUEST_PEER_FILES:
case PeerMessageOps.OPCODE_PEER_FILES_ERROR: break;
case PeerMessageOps.OPCODE_PEER_FILE: {
byte lastVal = 0;
if (last) {
lastVal = 1;
}
dos.writeByte(lastVal);
dos.writeLong(fileSize);
dos.write(fileHash.getBytes());
dos.write(filenameLong);
dos.write(filenameVal.getBytes());
break;
}