Thema: Netzwerkprogrammieren in Java: Datei an einen anderen PC schicken
Klicke hier, um dich anzumelden
Du kannst aus dieser Liste ein Symbol für deine Nachricht auswählen.
Wenn du diese Option aktivierst, werden URLs automatisch mit BB-Code ergänzt. www.beispiel.de wird zu [URL]http://www.beispiel.de[/URL].
Wenn du möchtest, kannst du dieses Thema bewerten.
code snibbletts poste ich im pastebin http://pastebin.com/ so kann ich den code nicht lesen. Es kann gut sein, dass Ihr java client server socketprogrammierung korrekt ist, aber windows macht probleme. zuert wuerde ich von dos shell aus die konnektivitaet mit ftp put oder get testen. ftp 192.168.0.4 das geht prima bei unix, BSD und linux, nur manche windowse haben einen ftp client aber keinen server. dann wuerde ich das java programm das gleiche machen was Sie eh ueber console machen. Vorausgesetzt es klappt. Von windows zu unix klappt immer aber nicht umgekehrt. ob java einen windows ftp server ersetzen kann weiss ich nicht. ich bin dabei im project glassfish, was einen web application server ist, aber ich habe das nie unter windows gemacht. windows 2003 server hat IIS, das klappt auch allerdings ist das immer noch keinen ftp server. ich wuerde einfach opensolaris als live cd reinschieben und dann haben Sie sofort einen funktionierenden ftp server. Knoppix geht auch. Please, einfach den java code bei pastebin.com posten ich habe da ein subdomain. http://lordbyte.pastebin.com/ syntax highlighting java retain forever, FTP macht leichte probleme wenn mehr als 2GByte filesize durch ethernet LAN soll, und SELinux Security enhanced kann blockieren. Wenn Sie keine Lust auf Unix haben dann kann man hier anfangen. http://www.windowsnetworking.com/ http://www.windowsnetworking.com/art...ics-Part1.html http://www.windowsnetworking.com/art...-Protocol.html Es muss nicht ftp sein http mit IIS geht auch.
ok, hat aber keiner mehr eine idee warum das nicht klappt? Könnte mir dann jemand vielleicht ein anderes beispiel geben?
Das hat nichts mit Vista zu tun. Windowspfade werden immer mit \ beschrieben, das war schon immer so. Da aber \ eine Sonderbedeutung in Java hat, muss man \\ schreiben.
es geht leider immer noch nicht. Aber es kann doch eigentlich nicht sein das ich auf Vista den Pfad anders schreiben muss oder?
Es muss ja auch c:\\test.exe heißen
Hi, Das stimmt leider bin nicht so bewandert in Java. Bin gerade mal 13 Jahre und mache Java auch erst ein jahr Der Pfad sieht jetzt so aus: File file = new File("C:/test.mp3"); Die Exception kommt jetzt auch nicht mehr aber am anderen Computer kommt die datei nicht an
ok, zum fehler: dein system kann die datei nicht finden (ist ja auch klar, da der pfad falsch angegeben ist) dadurch wird in den catch block gesprungen, und der server nicht geschlossen. nach abarbeitung des catch blocks wird ein neuer serversocket gestartet, natürlich wieder mit dem selben port. der alte ist jedoch noch aktiv (da nicht server.close ausfgeführt wurde) , und die endlosschleife an exceptions nimmt seinen lauf. zum code allgemein: ich empfehle dir eine buch zur pointerarithmetik in java. man merkt, dass du in java noch nicht so sehr bewandert bist, denn durch strikte anwendung von design patterns, hätte so ein fehler nicht auftreten dürfen. zum buch: http://www.javabuch.de/ , da wird viel auf grundsätliche sachen eingegangen.
Hi, ja klar hier ist der Code: Code: import java.net.*; import java.io.*; publicclass DateiClient { publicstaticvoid main(String args[]) { Socket server = null; int port = 1234; SocketAddress addr = new InetSocketAddress("192.168.2.34", port); try{ server = new Socket(); server.connect(addr, 2000); InputStream in = server.getInputStream(); FileOutputStream fileOut = new FileOutputStream("c:/test1.mp3"); byte[] buffer = newbyte[1024]; while (server.isConnected()) { int bytesRead = in.read(buffer); if (bytesRead == -1) break; fileOut.write(buffer, 0, bytesRead); } fileOut.close(); } catch( UnknownHostException ex) { } catch(IOException ex) { } finally{ if (server != null) { try{ server.close(); } catch (IOException ex) { } } } } }
import java.net.*; import java.io.*; publicclass DateiClient { publicstaticvoid main(String args[]) { Socket server = null; int port = 1234; SocketAddress addr = new InetSocketAddress("192.168.2.34", port); try{ server = new Socket(); server.connect(addr, 2000); InputStream in = server.getInputStream(); FileOutputStream fileOut = new FileOutputStream("c:/test1.mp3"); byte[] buffer = newbyte[1024]; while (server.isConnected()) { int bytesRead = in.read(buffer); if (bytesRead == -1) break; fileOut.write(buffer, 0, bytesRead); } fileOut.close(); } catch( UnknownHostException ex) { } catch(IOException ex) { } finally{ if (server != null) { try{ server.close(); } catch (IOException ex) { } } } } }
Und der client? du sagtest ja, der fehler tzritt auf, wenn du das clientprogramm startest.
Hi, hier ist der Code von meinem Serverprogramm: Code: import java.net.*; import java.io.*; public class DateiServer { privatestaticvoid behandeln( Socket client ) throws IOException { File file = new File("c:/test.mp3"); OutputStream out = client.getOutputStream(); InputStream fileIn = new FileInputStream(file); byte[] buffer = newbyte[1024]; while (fileIn.available() > 0) { out.write(buffer, 0, fileIn.read(buffer)); } fileIn.close(); } publicstaticvoid main(String args[]) { while(true) { Socket client = null; ServerSocket server = null; try{ server = new ServerSocket( 1234); client = server.accept(); behandeln ( client ); server.close(); }catch( IOException ex) { ex.printStackTrace(); } finally { if( client != null ) { try{ client.close(); } catch(IOException ex) { ex.printStackTrace(); } } } } }} Tut mir leid dass der Code so unleserlich geworden ist. Hab's einfach nicht besser hinbekommen
import java.net.*; import java.io.*; public class DateiServer { privatestaticvoid behandeln( Socket client ) throws IOException { File file = new File("c:/test.mp3"); OutputStream out = client.getOutputStream(); InputStream fileIn = new FileInputStream(file); byte[] buffer = newbyte[1024]; while (fileIn.available() > 0) { out.write(buffer, 0, fileIn.read(buffer)); } fileIn.close(); } publicstaticvoid main(String args[]) { while(true) { Socket client = null; ServerSocket server = null; try{ server = new ServerSocket( 1234); client = server.accept(); behandeln ( client ); server.close(); }catch( IOException ex) { ex.printStackTrace(); } finally { if( client != null ) { try{ client.close(); } catch(IOException ex) { ex.printStackTrace(); } } } } }}
poste doch mal die codes bb chris12
Hi Leute, ich möchte eine Datei von einem PC zum anderen schicken. Dazu habe ich 2 Programme geschrieben: 1. Ein Serverprogramm das auf dem "Server PC" läuft und die ganze Zeit auf Client anfragen wartet. 2. Ein Clientprogramm das auf dem "Client PC" läuft. Wenn ich die beiden Programme auf einem Rechner laufen lasse, wird die Datei verschickt. Aber wenn ich die das Clientprogramm auf dem "Client PC" starte, sagt mein Serverprogramm: java.net.BindException: Address already in use: JVM_Bind at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(Unknown Source) at java.net.ServerSocket.bind(Unknown Source) at java.net.ServerSocket.<init>(Unknown Source) at java.net.ServerSocket.<init>(Unknown Source) at DateiServer.main(DateiServer.java:38) Ich habe die Port Nummer schon öfter geändert aber es tritt immer der selbe Fehler auf Was mache ich falsch Wäre für jeden Tipp sehr dankbar!
Foren-Regeln