# .jpg, .wav per ServerClient Verbindungen verschicken



## dadidum (26. Aug 2004)

Hallo zusammen ich möchte per ServerClient Verbindung Daten übermitteln. Ich habe dafür ein gängiges + lauffähiges ServerClient Programm aus dem Inet gefischt!! Erstelle ich eine Verbindung auf dem eigenen Rechner so funktioniert es tadellos, sobald ich aber Netzwerk es probiere, gibt die catch Funktion vom Server den "Netzfehler" aus! Hat jemand ne Idee was dort schief läuft????

Oder ne bessere Idee?????

danke im vorraus dadidum




*Hier der Server*


```
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.channels.FileChannel;


public class TCPServer {
	
	
	
	public TCPServer(){
		
        try {
            ServerSocket servSock = new ServerSocket(565);        
            System.out.println("Warte auf Verbindung...");      
            Socket clientconnection = servSock.accept();
            System.out.println("Client verbunden von " + clientconnection.getInetAddress());   
            
 
            ObjectInputStream incoming = new ObjectInputStream(clientconnection.getInputStream()); 
            		
                           //Das Objekt wird eingelesen und in ein File geschrieben
                           // anschließend sicherlich umständlich kopiert!!

			File targi  = (File) incoming.readObject();
              		File targetFile = new File("C:/123.wav");

			FileInputStream in = new FileInputStream(targi);
			FileOutputStream out = new FileOutputStream(targetFile);

	       		FileChannel sourceChannel = in.getChannel();
		        FileChannel targetChannel = out.getChannel();

		        sourceChannel.transferTo(0, targi.length(), targetChannel);

	          	sourceChannel.close();
	   		targetChannel.close();

        }
        catch(Exception e) {System.out.println("Netzfehler!");}
	}

}
```

*Nun der Client*


```
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class TCPClient {


	public static int port = 0;
	public static String  host = null;
	public static Socket serverconnection = null;
	
	
	
	public static void main(String args[])throws Exception{
		
		try{
			//DAS FILE WIRD GELESEN
			File sourceFile = new File("yip.wav");
 			
 			// Benutzter-Eingaben über BufferReader einlesen
		  	BufferedReader userIn=new BufferedReader(new InputStreamReader(System.in));
 			
  			// Für den Verbindungsaufbau zum Host werden Benutzereingaben benötigt.
  			System.out.println("Mit welchem Rechner wollen Sie verbunden werden:");
  			host = userIn.readLine();		
  			System.out.println("Auf welchem Port wollen Sie sich anmelden?");
  			port = Integer.parseInt(userIn.readLine());
  			
  			// Ein Socket wird erstellt. Hierbei wird eine Verbindung zum 
  			// host aufgebaut. Das Socket-Objekt repräsentiert den host.
			serverconnection = new Socket(InetAddress.getByName(host),port);
			
			System.out.println("Verbindung zu "+host+" auf Port: "+port+" aufgebaut!");
  			
			
			// Es wird ein OutptStream erzeugt und in diesem ein String[] gelegt
			ObjectOutputStream outgoing = new ObjectOutputStream(serverconnection.getOutputStream()); 
			outgoing.writeObject(sourceFile);
			
			
  			// Der InputStream vom Socket wird geholt, und an einen BufferedReader 
  			// weitergeleitet. So können Servermeldungen leicht ausgelesen werden.
		  	BufferedReader serverIn = new BufferedReader(new InputStreamReader(serverconnection.getInputStream()));
		  	
		  	
		  	// Ein PrintWriter leitet sämtliche Eingaben, an den 
		  	// Outputstream des Serversweiter. Über Ihn können komfortabel 
		  	// Meldungen an den Client übertragen werden.
		  	PrintWriter serverOut = new PrintWriter(serverconnection.getOutputStream(),true);
		
		  	// Benutzer eingabe
		   	String command=null;
		
		   	// Antwort vom host	
		  	String response=null;
		  	
		  	// Schleife läuft solange bis der Server die Verbindung 
		  	// unterbricht. 
		  	do {
		  		// Benutzereingabe wird ausgelesen und zum Server geschickt
		  		
		   		System.out.print("Eingabe: ");
		   		command=userIn.readLine();
		   		serverOut.println(command);
		   		serverOut.flush();
		   		// Antwort vom Server wird entgegen genommen, und auf die 
		   		// Konsole geschrieben
		   		response=serverIn.readLine();
		   		System.out.println(response);
		   	}
		   	while(response!=null);  	
		 }
		 catch(IOException e) {	System.out.println("Verbindung zum Server verloren!");		 }
		 finally {
		 	try { 
		    	// Socket wird geschlossen
		    	serverconnection.close(); 
		  	}
		  	catch(IOException e) {
		  		System.err.println(e);
		 	}
		}

	}

}
```


----------



## foobar (26. Aug 2004)

Poste mal bitte den Stacktrace.


----------



## dadidum (26. Aug 2004)

tja da muss ich meine Unwissenheit- preis geben....... wie zeichnet man ein Stacktrace auf???


----------



## thE_29 (26. Aug 2004)

e.printStackTrace();


----------



## dadidum (26. Aug 2004)

java.io.FileNotFoundException: yip.wav (Das System kann die angegebene Datei nicht finden)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at TCPServer.<init>(TCPServer.java:51)
	at Starter2.main(Starter2.java:21)



mmmh soll wohl bedeuten das er Datei schon auf der ClientSeite nicht gefunden hat, allerdings liegt sie in dem Verzeichnis!!!


----------



## thE_29 (26. Aug 2004)

na, wenn er sie nicht findet dann findet er sie nicht, und aus 

dann hast irgendwo nen pfusch gedreht


----------



## dadidum (26. Aug 2004)

Tja wird wohl, nur was mich dabei irritiert, ...wenn ich auf meinem Rechner ClientServer laufen lasse erstellt er mir ohne Probleme die Datei!!

Gibt es vielleicht noch eine andere Variante um diese Idee zu verwirklichen!!

danke trotzdem....


----------



## dadidum (26. Aug 2004)

Der Server hat ja diese Fehlermeldung ausgespuckt, das bedeutet ja dann, daß er versucht hat die "yip.wav" gesucht zu haben. Ich habe auf der Client Seite den Zusatz "C:\yip.wav" gemacht und die Fehlermeldung des "Server" bezog sich dann auf C:\yip.wav, könnte es sein, dawss er auf dem eigenen C, also Server Seite gesucht hat und nicht die Wav-Datei auf dem Client übernommen hat????????

Nur so ne Idee!


----------



## thE_29 (26. Aug 2004)

jo das wird woll so sein


----------

