Hallo zusammen habe folgendes problem
ich verschicke ein file in einem netzwerk.
Cliend sendet datei zum server, server soll daraufhin eine meldung zurückgeben erhalten.
client->sende einen String an server
server->verarbeitet erhaltenen String vom client
client ->sende ein File
server->empfange File vom client
server->sende einen String an client
Nur die datei verschicken klappt bei mir ja aber einen String und danach das File das funktioniert nicht vileicht hat jemand mal kurz zeit und kann mal schauen was ich falsch mache
Danke euch.
Main des Clients
Client Klasse
ServerMain
Server Klasse
ich verschicke ein file in einem netzwerk.
Cliend sendet datei zum server, server soll daraufhin eine meldung zurückgeben erhalten.
client->sende einen String an server
server->verarbeitet erhaltenen String vom client
client ->sende ein File
server->empfange File vom client
server->sende einen String an client
Nur die datei verschicken klappt bei mir ja aber einen String und danach das File das funktioniert nicht vileicht hat jemand mal kurz zeit und kann mal schauen was ich falsch mache
Danke euch.
Main des Clients
Java:
import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ClientMain
{
public static void main(String[] args)
{
File file = new File("c:/test3.txt");
Client client = new Client("localhost", 4711,file);
client.start.start();
}
}
Client Klasse
Java:
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client implements Runnable {
String serverName;
Thread start=new Thread(this);
File file;
int port;
Socket socket;
String fileName;
InputStream is=null;
OutputStream os=null;
public Client(String serverName, int port, File file)
{
this.serverName = serverName;
this.port = port;
this.file = file;
}
private void sendInformation(String FileName,String Type)
{
try {
DataOutputStream outstream=new DataOutputStream(socket.getOutputStream());
outstream.writeUTF(FileName+","+Type);
outstream.flush();
outstream.close();
} catch (IOException e) {
System.out.println("Send Information Fehler");
e.printStackTrace();
}
}
private void send(File file)
{
if(socket==null)System.out.println("send(File) socket==null");
try
{
os = socket.getOutputStream();
} catch (IOException e1) {System.out.println("os init in sendFile"); e1.printStackTrace();}
System.out.println("Datei wird gesendet");
byte[] buffer = new byte[16384];
try
{
is = new FileInputStream(this.file);
while (is.available() > 0)
{
os.write(buffer, 0, is.read(buffer));
}
os.flush();
System.out.println("Datei gesendet");
}
catch (FileNotFoundException e) {System.out.println("FILENOTFOUND in sendFile");e.printStackTrace();}
catch (IOException e) {System.out.println("IO in sendFile");e.printStackTrace();}
finally
{
try
{
is.close();
}
catch (IOException e) {e.printStackTrace();}
}
}
public void disconnect()
{
try {
os.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() {
try {
//verbindungsaufbau
socket = new Socket(this.serverName, this.port);
if(socket.isConnected())
{
System.out.println("Berbunden zu.."+socket.getRemoteSocketAddress());
}
File file = new File("c:/"+fileName);
System.out.println("Starte übertragung der Datei...."+file.getName());
sendInformation("Filename.sql","someInformation");
send(file);
} catch (IOException e) {e.printStackTrace();}
}
}
ServerMain
Java:
import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ServerMain
{
public static void main(String[] args)
{
File file = new File("c:/new.txt");
Server server = new Server(file, 4711);
server.serverThread.start();
}
}
Server Klasse
Java:
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Server implements Runnable
{
File file;
final int port;
Thread serverThread=new Thread(this);
Socket socket ;
public Server(File file, int port)
{
this.file = file;
this.port = port;
}
public void initInformation()
{
try
{
DataInputStream is=new DataInputStream(socket.getInputStream());
String information=is.readUTF();
System.out.println(information);
} catch (IOException e) {System.out.println("initInformation failed");e.printStackTrace();}
}
public void run()
{
try
{
System.out.println(getClass() + " run Server...");
ServerSocket serverSocket = new ServerSocket(this.port);
System.out.println("Warte auf Verbindung...........");
socket= serverSocket.accept();
System.out.println("Verbindung hergestellt");
System.out.println("Initialisiere informationen....");
initInformation();
System.out.println(getClass() + " Verbunden hat sich: "
+ socket.getRemoteSocketAddress());
System.out.println(getClass() + " empfange Datei... " + file);
OutputStream outputStream = new FileOutputStream(file);
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[16384];
int len = 0;
while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
System.out.println(getClass() + " Datei empfangen....100%");
inputStream.close();
outputStream.close();
// socket.close();
}
catch (IOException e) {e.printStackTrace();}
}
}