flush() scheint nicht richtig zu arbeiten (socket -> getOutputStream -> OutputStremWriter ..)

  • Themenstarter Themenstarter IchHabMalNe1234
  • Beginndatum Beginndatum
I

IchHabMalNe1234

Gast
Hallo liebe Forumgemeinde 😀
Ich hab eine kleines Prob, hoffentlich könnt Ihr mit helfen was ich falsch mache *G* bei 33°C schaltet mein Kopf langsam ab *G*

Also:
Interessanterweiße scheint flush() nicht richtig zu arbetien. Oder ich habe da etwas grundliegendes falsch verstanden.

Der code unten zeigt nur einen Teil des Codes. Ich kann der Socket leider noch nicht schließen. Hier würde seitens von java flush() aufgerufen werden was so dann auch funktioniert.

Die while(true){ } unten soll nur verhindern dass das prog. ans Ende kommt um zu zeigen das flush() nicht ausgeführt wird.

Beim "abschießen" des programmes in der cmd (Strg + c) wird der flush() jedoch wirksam.

Java:
Socket socket = new Socket(args[0], 2000);
BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( socket.getOutputStream() ) );

writer.write(args[1]);
writer.flush();

while(true){}

So nun die Frage: was mach ich falsch? ^^


* hiermit lese ich den Stream: ( wiegesagt: beim "abschießen und bei close() bekomme ich daten über den Stream)

Java:
ServerSocket serverSocket = new ServerSocket(2000);

Socket socket = serverSocket.accept();
BufferedReader reader = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );

String test = reader.readLine();
System.out.println("got file: "+ test);
 
Und hier die Lösung des Problems

Java:
 writer.write(args[1]+"\n");

Der flush() hat einwandfrei gearbeitet. Jedoch, da ich mit readLine() arbeite muss das "ende der Zeile gesetzt werden" - eigentlich klar 😀

Also: Augenmerkt auf: \n 😀

Danke für die Hilfe @ eRaaaa (ausm Chat 😀)

Gruß Michi


Der ganze Java-Code (experimentier-phase)
Java:
import java.io.*;
import java.net.*;

public class Networking {

	public static void main(String[] args){
		
		System.out.println(args.length);
		
		try {
			
			if(args.length == 0)
			{

				ServerSocket serverSocket = new ServerSocket(2000);

				while(true){
					Socket socket = serverSocket.accept();
					System.out.println("connected");
					BufferedReader reader = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
					
					String test = reader.readLine();
					System.out.println("got file: "+ test);
					
					BufferedReader fileReader = new BufferedReader( new FileReader(test) );
					OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream());
					
					System.out.println("---- Sending -----");
					
					for(String line = fileReader.readLine(); line != null; line = fileReader.readLine())
						{
						writer.write(line);
						System.out.println(line);
						}
					writer.flush();
					
					System.out.println("----- Close ------");
					
					socket.close();
				}
				
			}else{				
				
				Socket socket = new Socket(args[0], 2000);
				BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( socket.getOutputStream() ) );

				writer.write(args[1]+"\n");
				writer.flush();
				
				System.out.println(args[1] +" -> "+ args[0]);
				
				BufferedReader reader = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
				
				for(String line = reader.readLine(); line != null; line = reader.readLine())
				{
				System.out.println(line);
				}
				
			}
		
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}
 

Neue Themen


Zurück
Oben