J'essaie de créer une application client-serveur en Java. Cette application va transférer des images du client au serveur. L'exigence est que l'application doit être dans l'ordre des octets du réseau. (Image ci-dessous)Java personnalisé Protocole client-serveur
Cela m'aidera à apprendre comment déployer d'autres protocoles dans le futur, donc je cherche des astuces pour l'implémenter. Actuellement, mon serveur-client travaille et transfère des images, mais je ne sais pas comment implémenter le protocole.
Merci
Ceci est mon code actuel serveur/client:
public class NetworkServer {
public static void main(String[] args) { NetworkServer servidor = new NetworkServer(); System.out.println("Server started()"); BufferedInputStream bis; BufferedOutputStream bos; int num; File file = new File("/images"); if (!(file.exists())){ file.mkdir(); } try { ServerSocket socket = new ServerSocket(15000); Socket incoming = socket.accept(); try { try{ if (!(file.exists())){ file.mkdir(); } InputStream inStream = incoming.getInputStream(); OutputStream outStream = incoming.getOutputStream(); BufferedReader inm = new BufferedReader(new InputStreamReader(inStream)); PrintWriter out = new PrintWriter(outStream, true /* autoFlush */); String filelength = inm.readLine(); String filename = inm.readLine(); System.out.println("Server() Filename = " + filename); System.out.println("Server() File lenght: " + filelength + " bytes"); System.out.println("Server() ACK: Filename received = " + filename); //RECIEVE and WRITE FILE byte[] receivedData = new byte[1000000]; bis = new BufferedInputStream (incoming.getInputStream()); bos = new BufferedOutputStream (new FileOutputStream("/images" + "/" + "image.jpg")); while ((num = bis.read(receivedData)) > 0){ bos.write(receivedData,0,num); } bos.close(); bis.close(); File receivedFile = new File(filename); long receivedLen = receivedFile.length(); System.out.println("Server() ACK: Length of received file = " + receivedLen); } finally { incoming.close(); } } catch (IOException e){ e.printStackTrace(); } } catch (IOException e1){ e1.printStackTrace(); } } }
Quelle est votre question? Tout ce que vous avez à faire est d'utiliser 'writeInt' et' readInt' aussi loin que je peux voir. –
Bonjour Peter, ma question est de savoir comment implémenter le protocole décrit dans l'image. Comment définir cette longueur et cet ID est de 32 bits, etc. – spicyramen
Vous appelez DataOutputStream.writeInt() pour écrire un int 32 bits et DataInputStream.readInt() pour lire un int 32 bits. Java utilise l'ordre des octets du réseau pour ces classes. –