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
Nun der Client
Oder ne bessere Idee?????
danke im vorraus dadidum
Hier der Server
Code:
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
Code:
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);
}
}
}
}