This commit is contained in:
2026-04-25 14:26:35 +02:00
parent c0fb933fce
commit 0cf758943b
10 changed files with 216 additions and 88 deletions

View File

@@ -7,6 +7,11 @@ import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import es.um.redes.nanoFiles.application.NanoFiles;
import es.um.redes.nanoFiles.tcp.message.PeerMessage;
import es.um.redes.nanoFiles.tcp.message.PeerMessageOps;
import es.um.redes.nanoFiles.util.FileInfo;
@@ -78,12 +83,26 @@ public class NFServer implements Runnable {
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
int intNumber = dis.readInt();
/* int intNumber = dis.readInt();
System.out.println("received " + intNumber);
int newInt = intNumber + 1;
dos.writeInt(newInt);
System.out.println("sent " + newInt);
System.out.println("sent " + newInt); */
PeerMessage msgIn = PeerMessage.readMessageFromInputStream(dis);
System.out.println("received " + msgIn.getOpcode() + " " + PeerMessageOps.opcodeToOperation(msgIn.getOpcode()));
if (msgIn.getOpcode() == PeerMessageOps.OPCODE_REQUEST_PEER_FILES) {
PeerMessage msgOut = new PeerMessage(PeerMessageOps.OPCODE_PEER_FILE);
msgOut.setLast(true);
msgOut.setFileSize(62);
msgOut.setFileHash("abcdefghijklmnoprqstuvwxyzaaaaaaaaaaaaaa");
msgOut.setFilenameLong((byte) 10);
msgOut.setFilenameVal("prueba.txt");
msgOut.writeMessageToOutputStream(dos);
System.out.println("sent " + PeerMessageOps.opcodeToOperation(msgOut.getOpcode()));
}
} catch (IOException e) {
// ???????
}
@@ -183,13 +202,36 @@ public class NFServer implements Runnable {
InetSocketAddress clientAddr = (InetSocketAddress) socket.getRemoteSocketAddress();
try {
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
while(true) {
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
PeerMessage msgIn = PeerMessage.readMessageFromInputStream(dis);
switch (msgIn.getOpcode()) {
case PeerMessageOps.OPCODE_REQUEST_PEER_FILES:
FileInfo[] archivos = NanoFiles.db.getFiles();
for (int i = 0; i < archivos.length; i++) {
PeerMessage msgOut = new PeerMessage(PeerMessageOps.OPCODE_PEER_FILE);
FileInfo archivo = archivos[i];
msgOut.setFileHash(archivo.fileHash);
msgOut.setFileSize(archivo.fileSize);
msgOut.setFilenameVal(archivo.fileName);
msgOut.setFilenameLong((byte)archivo.fileName.length());
msgOut.setLast(false);
if (i == archivos.length - 1) msgOut.setLast(true);
msgOut.writeMessageToOutputStream(dos);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}

View File

@@ -1,29 +1,29 @@
package es.um.redes.nanoFiles.tcp.server;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class NFServerState {
private int numberOfConnections;
private ArrayList<Socket> sockets;
public NFServerState() {
numberOfConnections = 0;
sockets = new ArrayList<>();
}
public int getNumberOfConnections() {
return numberOfConnections;
}
public List<Socket> getSockets() {
// tu puta madre va a hacer copias
return sockets;
}
public void updateState(Socket socket) {
sockets.add(socket);
numberOfConnections++;
}
}
package es.um.redes.nanoFiles.tcp.server;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class NFServerState {
private int numberOfConnections;
private ArrayList<Socket> sockets;
public NFServerState() {
numberOfConnections = 0;
sockets = new ArrayList<>();
}
public int getNumberOfConnections() {
return numberOfConnections;
}
public List<Socket> getSockets() {
// tu puta madre va a hacer copias
return sockets;
}
public void updateState(Socket socket) {
sockets.add(socket);
numberOfConnections++;
}
}