Frage: Buffered Reader --> Wie komm ich an die Daten (Byt

Status
Nicht offen für weitere Antworten.

Deficiency

Mitglied
Hallo

Also eine Frage:

Ich hab nen Netzwerkscanner. Auf dessen Port lausche ich. Den Daten Stream den ich bekomme ich eine Bilddatei.
1. Welchen Reader soll ich nehmen.
2. Wie komme ich an die Byte (Rohdaten)?

Code:
try {

			scanInetAddress = InetAddress.getByAddress(scanIpAddress);

			if (scanInetAddress.isReachable(5000)) {

				Socket scanSocket = new Socket(scanInetAddress, 2400);
				
				isr = new InputStreamReader(scanSocket.getInputStream());
				
							
				BufferedReader in = new BufferedReader(new InputStreamReader(
						scanSocket.getInputStream()));
				
			
				
				//in.read();
				
				scanSocket.close();
			}

		}

hab es jetzt mal mit InputStreamReader od Buffered Reader aber da hab ich doch keine möglichkeit an die Rohdaten zu kommen, oder?

Steh warscheinlich wieder voll auf der Leitung!

Ergänzung:

Liegt der Fehler an dem Stream: Muss ich als Client nicht vom scansocket.getOutputStream() holen?
Dann komm ich nämlich mit dem DataOutputStream an die Rohdaten?!?!?!?

Danke Flo
 
Im Prinzip kannst du lesen, bis nichtsmehr kommt - und zwar direkt aus dem InputStream - und das gelesene irgendwo hinschreiben. Z.B. in einen ByteArrayOutputStream, von dem man sich am Ende sehr leicht den byte-Array holen kann.
Code:
    public static byte[] toByteArray(InputStream inputStream) throws IOException
    {
        BufferedInputStream bis = new BufferedInputStream(inputStream);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte buffer[] = new byte[8192];
        int readBytes = 0;
        while((readBytes = bis.read(buffer, 0, buffer.length)) > 0)
        {
            baos.write(buffer, 0, readBytes);
        }
        baos.flush();
        return baos.toByteArray();
    }
 
Code:
try {

			scanInetAddress = InetAddress.getByAddress(scanIpAddress);

			if (scanInetAddress.isReachable(5000)) {

				Socket scanSocket = new Socket(scanInetAddress, 2400);
				
				isr = new InputStreamReader(scanSocket.getInputStream());
				
				dos = new DataOutputStream(scanSocket.getOutputStream());
												
				byte[] readDos = new byte[dos.size()];
				
				
				dos.write(readDos);
				img = tk.createImage(readDos); //Bild mit dem awt.toolkit machen
				
				
				BufferedReader in = new BufferedReader(new InputStreamReader(
						scanSocket.getInputStream()));
				
			
				
				//in.read();
				
				scanSocket.close();
			}

Hab meinen Code jetzt so verändert.
Brauch blos noch das OK von Euch 😀 ob ich mit dem DataOutputStream bzw. getOutputStream richtig liege?

thx
 
Sorry habe deine Antwort erst jetzt gesehen!!!

DANKE!!!!!!

Als Client brauch ich aber auf jedenfall den InputStream, oder? (Verständnisfrage)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben