Hi Leute,
ich habe mich mal spasseshalber mit Netzwerkprogrammierung befasst. ICh habe mir als Ziel gesetzt, erst einmal nur eine vordefinierte Mp3-Datei von einem Server an einen Client zu Streamen, sodass es beim Client auf der Festplatte gespeichert wird.
Allerdings habe ich ein Problem bei dem verschachteln von Streams. Welchen sollte ich dafür am Besten nehmen und wie muss ich das schachteln?
Geändert:
Ich habe da jetzt mal rumgebastelt. Also er sollte jetzt 1mb des Liedes in den Ausgabestrom schreiben, damit der Client damit was machen kann. Ist das soweit schonmal richtig?
Die ClientSeite sieht bis jetzt folgendermaßen aus:
Die Meldung "Song received" wird ausgegeben. Also denke ich doch mal, dass das 1MB schonmal ankommt oder? Wie muss ich jetzt weiter machen, damit der Client das auf der HDD speichern kann?
ich habe mich mal spasseshalber mit Netzwerkprogrammierung befasst. ICh habe mir als Ziel gesetzt, erst einmal nur eine vordefinierte Mp3-Datei von einem Server an einen Client zu Streamen, sodass es beim Client auf der Festplatte gespeichert wird.
Allerdings habe ich ein Problem bei dem verschachteln von Streams. Welchen sollte ich dafür am Besten nehmen und wie muss ich das schachteln?
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package server;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Phenix
*/
public class SocketHandler implements Runnable {
private Socket socket = null;
public SocketHandler(Socket socket) {
this.socket = socket;
}
public void run() {
InputStream in = null;
OutputStream out = null;
try {
FileInputStream fileIn=new FileInputStream(new File("c:\\Musik\\fff.mp3"));
in = socket.getInputStream();
out = socket.getOutputStream();
ObjectInputStream objIn=new ObjectInputStream(in);
ObjectOutputStream objOut=new ObjectOutputStream(out);
byte[] buffer=new byte[1024*1000];
if(objIn.readUTF().equals("handshake")){
fileIn.read(buffer);
objOut.write(buffer);
objOut.flush();
}
} catch (IOException ex) {
Logger.getLogger(SocketHandler.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
in.close();
out.close();
socket.close();
} catch (IOException ex) {
Logger.getLogger(SocketHandler.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
Geändert:
Ich habe da jetzt mal rumgebastelt. Also er sollte jetzt 1mb des Liedes in den Ausgabestrom schreiben, damit der Client damit was machen kann. Ist das soweit schonmal richtig?
Die ClientSeite sieht bis jetzt folgendermaßen aus:
Java:
public void actionPerformed(ActionEvent e) {
try {
//SocketStröme holen und kapseln
Socket serversocket = new Socket("localhost", 10100);
out=serversocket.getOutputStream();
in=serversocket.getInputStream();
objOut=new ObjectOutputStream(out);
objIn=new ObjectInputStream(in);
//Suchanfrage zu Server schicken
objOut.writeUTF(SEARCHFIELD.getText());
objOut.flush();
objIn.read(new byte[1024*1000]);
STATUS.setText("Song received!");
//System.out.println(objIn.readUTF());
} catch (UnknownHostException ex) {
STATUS.setText("Unknown Host!");
} catch (IOException ex) {
STATUS.setText("IOException! Error");
}
}
Zuletzt bearbeitet: