Salut tout le monde, j'ai un peu de problème avec UDP et Datagrams. Je suis supposé faire un serveur qui recevra une demande du client pour envoyer un fichier dans le même répertoire. Le serveur UDP obtiendra alors ce fichier (une vidéo), le placera dans un datagramme et l'enverra. Je pense que je sais comment le faire, mais je ne peux pas mettre le fichier dans le datagramme. Je le mets sous forme binaire, gardez cela à l'esprit.Utilisez les datagrammes java pour envoyer de la vidéo/audio du client au serveur?
Voici mon code à ce jour: modifier: Ceci est le serveur en passant, et je continue à avoir des problèmes avec BufferedInputReader et OutputReader, donc gardez cela à l'esprit :)
Scanner inFromUser = new Scanner(System.in);
int port = 12345;
DatagramSocket server = new DatagramSocket(port);
// Read name of file supplied by client (must be a line of text):
Scanner in = new Scanner(new DataInputStream(server.getInputStream()));
String filename = in.nextLine();
DatagramSocket request = server.accept();
// Create buffer, then we're ready to go:
// Puts file into binary form
BufferedInputStream inbinary =
new BufferedInputStream(new FileInputStream("poop.txt"));
// Outputs the binary form
BufferedOutputStream outbinary =
new BufferedOutputStream(request.getOutputStream());
int numbytes;
int countblocks = 0;
int countbytes = 0;
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length, port);
server.receive(packet);
while ((numbytes = inbinary.read(buf,0,1024)) >= 0)
{
// receive packet from client, telling it to send the video file
server.receive(packet);
InetAddress address = packet.getAddress();
packet = new DatagramPacket(buf, buf.length, address, port);
server.send(packet);
countblocks++; // keep statistics on file size
countbytes += numbytes;
outbinary.write(buf,0,numbytes); // write buffer to socket
}
outbinary.flush(); // FLUSH THE BUFFER
server.close(); // done with the socket
System.out.println(countblocks + " were read; " + countbytes + " bytes");
}
}
Oh ouais je sais, je voulais enlever cela, woops! –