Hallo Zusammen!
Ich versuche eine Datei übers Netzwerk zu schicken.
Ich habe eine FileSender Klasse:
Und eine FileReciever Klasse:
Und mit einer einfachen Textdatei klappt das auch wunderbar, aber wenn ich dann ein großes Bild schicken will sendet er nur die Hälfte. Dann habe ich mal rum gespielt, und gemerkt das er nur Textdateien bis 92 bytes versendet. Habt ihr eine Idee woran das liegen kann?
Danke schonmal!
Ich versuche eine Datei übers Netzwerk zu schicken.
Ich habe eine FileSender Klasse:
Java:
package de.pk.maximilian.util;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class FileSender {
private boolean connected;
private Socket socket;
private DataOutputStream out;
public FileSender() {
connectToHost("localhost", 6493);
sendFile(new File("C:/Users/Max/Desktop/test.txt"));
}
public void connectToHost(String ip, int port) {
try {
socket = new Socket(ip, port);
} catch (UnknownHostException e) {
e.printStackTrace();
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
System.exit(0);
}
try {
out = new DataOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
System.exit(0);
}
connected = true;
}
public void sendFile(File file) {
FileInputStream fin = null;
byte[] dataBuffer = new byte[(int) file.length()];
try {
fin = new FileInputStream(file);
fin.read(dataBuffer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
byte[] nameBuffer = file.getName().getBytes();
try {
out.write(nameBuffer.length);
out.write(nameBuffer);
out.write(dataBuffer.length);
out.write(dataBuffer);
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean isConnected() {
return connected;
}
/**
* @param args
*/
public static void main(String[] args) {
new FileSender();
}
}
Und eine FileReciever Klasse:
Java:
package de.pk.maximilian.util;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class FileReciever {
private ServerSocket serverSocket;
private DataInputStream in = null;
public FileReciever() {
waitForSender(6493);
waitForFile();
}
public void waitForSender(int port) {
Socket clientSocket;
try {
serverSocket = new ServerSocket(port);
} catch (IOException e) {
e.printStackTrace();
}
try {
clientSocket = serverSocket.accept();
in = new DataInputStream(clientSocket.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void waitForFile() {
File file;
FileOutputStream fout;
byte[] nameBuffer = null;
byte[] dataBuffer = null;
try {
nameBuffer = new byte[in.read()];
in.read(nameBuffer);
dataBuffer = new byte[in.read()];
in.read(dataBuffer);
} catch (IOException e) {
e.printStackTrace();
}
String name = new String(nameBuffer);
file = new File("C:/Users/Max/Desktop/" + "copy_" + name);
try {
fout = new FileOutputStream(file);
fout.write(dataBuffer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
new FileReciever();
}
}
Und mit einer einfachen Textdatei klappt das auch wunderbar, aber wenn ich dann ein großes Bild schicken will sendet er nur die Hälfte. Dann habe ich mal rum gespielt, und gemerkt das er nur Textdateien bis 92 bytes versendet. Habt ihr eine Idee woran das liegen kann?
Danke schonmal!