Probleme mit OutputStream

Status
Nicht offen für weitere Antworten.

Planetasia

Mitglied
Hallo,

Ich habe gerade gemerkt, dass sobald ich einen OutputStream schliesse, dass der Socket genauso geschlossen wird. Wie kann ich das umgehen?

Was ich machen will ist, ich will Nachrichten sowie Datein über Sockets senden können.Allerdings soll die Verbindung aufrecht bleiben und nicht nach dem ersten File geschlossen werden!

mein Code zum Senden einer Datei vom Client zum Server:
Java:
public void WriteMesssage(File f){
		
		//Hier wird dem Server mitgeteilt, dass ein File kommt
		out.println("File");
		out.flush();
		
		File myFile = f;
		out.println(myFile.getName()); 	//Hier wird der Name und FileTyp gesendet!
		int size;
		byte data[]= new byte[1024];
	    try {
			FileInputStream fileStream= new FileInputStream(myFile);
						
			//Hier wird das file gesendet!
			while((size=fileStream.read(data))!=-1){
				os.write(data, 0, size);
				os.flush();  //os = OutputStream
			}
			
			fileStream.close(); // Schliesst das File wieder
			os.close(); // Hier liegt das Problem.... Socket wird genauso geschlossen!
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    
	
	}

Kann mir bitte wer weiterhelfen?
 

Planetasia

Mitglied
nein.... das ist nur eine Methode zum senden von Datein... das restliche ist in der run() von Runnable
habe einen Socket auch...
Wenn ich diesen nicht schliesse dann wird die Datei vom Server nicht weiter an die anderen Clients gesendet.
Muss ganz ehrlich sagen ich kenn mich kaum aus, bin eben grad dabei das zu lernen ;-)
 

Michael...

Top Contributor
Bin auch nicht der Socket-Experte, aber wenn Du den OutputStream kappst, kappst Du ja auch die Verbindung.
Dass der Server die Datei nicht verteilt, liegt vermutlich daran, dass er nicht mitbekommt wann die Datei komplett übertragen ist. Welche Streams benutzt Du denn?
 

Planetasia

Mitglied
Genau das hab ich mir eben auch gedacht, dass er nicht weiss wann die datei fertig ist...
zum senden/empfangen von Datein verwende ich Input- OutputStreams
für Nachrichten aus dem Chat verwende ich PrintWriter zum senden und BufferedReader zum empfangen!
 
T

tuxedo

Gast
Das was du brauchst nennt sich "Protokoll". Mit unterschiedlichen Streamtypen die man für unterschiedliche Zwecke auf und wieder zu macht geht das nicht.

Schau dir mal RMI oder SIMON an... Oder lerne ein Protokoll zu schreiben mit dem du die Daten auf dem Stream separieren kannst.

- Alex
 

Planetasia

Mitglied
Hallo tuxedo.... also ich habe heute noch einiges ausprobiert.... funktioniert hat leider nichts....
hab öfters gelesen, dass man die größe der File braucht und dann die bytes einlesen kann. Das hätte ich jetzt probiert. Allerdings kommt da gar nix an.... kannst du mir vielleicht weiterhelfen?

Senden der Datei:
Java:
public void WriteMesssage(File f){
		
		out.println("File");
		out.flush();
		File myFile = f;
		
		out.println(myFile.getName());
		 
		 int size;
		 byte data[]= new byte[1024];
	    try {
			
			
			FileInputStream file= new FileInputStream(myFile);
			DataOutputStream dataOut = new DataOutputStream(new BufferedOutputStream(mClient.getOutputStream()));
			
			dataOut.writeLong(myFile.length());
			
			while((size=file.read(data))!=-1){
				os.write(data, 0, size);
				os.flush();
			}
			
			file.close();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    
	
	}

und so würde ich empfangen:
Java:
	if(line.equals("File")){	
					 
			        byte data[] = new byte[1024];
			        
			        String NameofFile=in.readLine();
			        FileOutputStream fileOut = new FileOutputStream("C:\\Server\\"+NameofFile);
			        int size;
			        DataInputStream dataIn = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
					//-----------------------------------------
						long lenght=dataIn.readLong();
					//------------------------------------
					
						
						// Datei zwischen speichern! 
			        
			     for(int i=0; i<lenght/1024; i++)   
			      {	
			    	 	size = is.read(data);			        	  
			        	fileOut.write(data, 0, size);
			                fileOut.flush();
			            
			        }
			        
			        fileOut.close();
}

Das empfangene File bleibt leer....
Was mach ich da falsch??

lg
 
T

tuxedo

Gast
Tja. Da musst du debuggen. Aber so wie es aussieht ´mischst du immer noch fleissig die Streamtypen.

Einmal benutzt du beim sender "out" um was rauszu schreiben, weiter unten dann auf einmal "dataOut". Wie gesagt: Streamtypen mischen ist, wie du nun praktisch siehst, keine gute Idee.

Bleib doch einfach komplett beim DataInputStream bzw. beim DataOutputStream .. Die können alles: String, primitive Datentypen, Objekte, ....

Siehe dazu auch: http://www.java-forum.org/netzwerkp...n-kommen-anders-als-gesendert.html#post533110

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
T OutputStream kommt nicht an Netzwerkprogrammierung 18
L Socket Wie kann ich checken ob ein User eine Nachricht per Outputstream an den Server gesendet hat? Netzwerkprogrammierung 1
S FTP OutputStream Timed out Netzwerkprogrammierung 2
D Socket Socket OutputStream leeren? Netzwerkprogrammierung 3
Seikuassi Socket CipherInput/OutputStream empfängt nichts Netzwerkprogrammierung 23
C Inhalt einer .JPG Datei in einen OutputStream schreiben? Netzwerkprogrammierung 10
E Socket Outputstream - chunks groeße bestimmen. Netzwerkprogrammierung 3
T Socket ObjectIn/OutputStream Netzwerkprogrammierung 3
A Socket BufferedReader.readLine() blockiert bis ein im Socket OutputStream was gesendet wird ... Netzwerkprogrammierung 9
M Socket InputStream sendet ausgaben von OutputStream zurück Netzwerkprogrammierung 2
D Inputstream to Outputstream Netzwerkprogrammierung 3
T Outputstream Byte-Array senden Netzwerkprogrammierung 2
H Input-/OutputStream Frage Netzwerkprogrammierung 6
O Mehrere Datei per DataInput/OutputStream über Socket Netzwerkprogrammierung 12
M Verbindung über Proxy// Problem mit Outputstream bei URLConn Netzwerkprogrammierung 5
PAX Outputstream von anderem Thread verwenden lassen Netzwerkprogrammierung 5
T Filter für Input UND OutputStream Netzwerkprogrammierung 4
Y Inhalt aus Textfield in OutputStream packen Netzwerkprogrammierung 4
bummerland Cookies über OutputStream senden Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben