Ich habe mich mal mit Java sockets auseinader gesetzt und wollte nun einen Dateien Server erstellen
Server:
Der Client:
Ich haeb nun probiert eine .mkv Datei über den Server herunterzuladen. Als ich die neue Datei dann geöffnet habe kam bei dem Film ein Standbild und es lief nicht weiter. Wo ist das Problem?
Schonmal Danke im Vorraus.
Server:
Java:
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Server {
public void run_server(){
try {
ExecutorService executorService = Executors.newFixedThreadPool(100);
ServerSocket server = new ServerSocket(1234);
System.out.println("Waiting for client at port " + server.getLocalPort() + "\n");
while (true) {
Socket client = server.accept();
executorService.execute(new Handler(client));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Server s = new Server();
s.run_server();
}
}
Code:
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.net.Socket;
public class Handler implements Runnable {
private Socket client;
public Handler(Socket client) {
this.client = client;
}
@Override
public void run() {
try {
System.out.println("client connected: " + client.getInetAddress());
FileInputStream fin = new FileInputStream("D:\\Musik\\Musik\\Charts\\21.mp3");
byte[] buffer = new byte[1000000000];
System.out.println(fin.read());
fin.read(buffer,0,buffer.length);
DataOutputStream out = new DataOutputStream(client.getOutputStream());
out.write(buffer,0,buffer.length);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Der Client:
Code:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Socket;
public class Client implements Runnable {
public static void main(String[] args) {
new Thread(new Client()).start();
}
@Override
public void run() {
try {
Socket client = new Socket("localhost", 1234);
DataInputStream in = new DataInputStream(client.getInputStream());
FileOutputStream fout = new FileOutputStream("D:\\test\\test.mkv");
System.out.println(in.read());
byte[] buffer = new byte[1000000000];
in.read(buffer,0,buffer.length);
fout.write(buffer,0,buffer.length);
} catch (IOException e) {
e.printStackTrace();
}
}
Schonmal Danke im Vorraus.