# String als byte Array über Socket versenden



## Nothiing___ (12. Okt 2010)

Hallo zusammen

Ich möchte einen String als bytes über einen BufferedOutputStream an den Client verschicken der die bytes dann mit einen BufferedInputStream empfängt. 

den String habe ich bereits in bytes umgewandelt.


```
/*
			 * PfadName als String wird in Byte umgewandelt
			 */
			byte[] bytes = pfadZumSenden.getName().getBytes();
			System.out.println(bytes);

			/*
			 * Zur überprüfung wird diesen dann gleich wieder in einen String
			 * umgewandelt und ausgegeben.
			 */
			String fileName = new String(bytes);
			System.out.println(fileName);
```

Meine Frage nun, habe ich die Möglichkeit das byte[] bytes mit dem BufferedOutputStream zu versenden und beim Client dann wie oben diese empfangenen bytes wieder in einen String umzuwandeln?


Danke für eure Antwort


----------



## Marcinek (12. Okt 2010)

Ja das geht. 

Mit auf dem Client einen OutputStream und Server InputSteam und einer aktiven Socketverbindung


----------



## Nothiing___ (12. Okt 2010)

Marcinek hat gesagt.:


> Ja das geht.
> 
> Mit auf dem Client einen OutputStream und Server InputSteam und einer aktiven Socketverbindung



ich möchte dies aber mit einem BufferedOutputStream senden.
Die Verbindung zwischen Server und Client besteht bereits es geht nur noch um das Senden der Bytes.
wie mache ich das?


----------



## SlaterB (12. Okt 2010)

na auf korrekte Weise,
zeig doch bitte an Code, was du unter 'Die Verbindung zwischen Server und Client besteht bereits' verstehst, ist ein Socket mit Stream vorhanden oder was genau?

jede einfache google-Suche wie 'BufferedOutputStream example' liefert diverse Beispiele a la 
Write to file using BufferedOutputStream - A Java Code Example
einen String oder ein byte[] in den Stream zu schreiben ist nur eine Zeile, aber mehr Schritte sind dann zum Socket usw. nötig


----------



## Nothiing___ (12. Okt 2010)

SlaterB hat gesagt.:


> na auf korrekte Weise,
> zeig doch bitte an Code, was du unter 'Die Verbindung zwischen Server und Client besteht bereits' verstehst, ist ein Socket mit Stream vorhanden oder was genau?
> 
> jede einfache google-Suche wie 'BufferedOutputStream example' liefert diverse Beispiele a la
> ...



Server-Seite

```
fileOut = new BufferedOutputStream(socketClientFile.getOutputStream());
			FileInputStream fileStream = new FileInputStream(pfadZumSenden);
			fileIn = new BufferedInputStream(fileStream);
			
			int len = 0;
			
			/*
			 * PfadName als String wird in Byte umgewandelt
			 */
			byte[] bytes = pfadZumSenden.getName().getBytes();
			System.out.println(bytes);

			/*
			 * Zur überprüfung wird diesen dann gleich wieder in einen String
			 * umgewandelt und ausgegeben.
			 */
			String fileName = new String(bytes);
			System.out.println(fileName);
			
			fileOut.write(bytes, 0, bytes.length);
```


Client-Seite

```
File filedest = new File("C:/Users/uex6071/Desktop/hoi.jpg");

		try {
			FileOutputStream fos = new FileOutputStream(filedest);
			fileOut = new BufferedOutputStream(fos);
			fileIn = new BufferedInputStream(socketFile.getInputStream());
			
			int len = 0;
			
			byte[] buffer = new byte[1024];
			byte[] bytes = new byte[1024];
			
			System.out.println(fileIn.read());
			System.out.println(new String(bytes) + " Filename");
			
		}
		catch(IOException e) {
			e.printStackTrace();
		}
```


----------



## SlaterB (12. Okt 2010)

auf Server-Seite also
> fileOut.write(bytes, 0, bytes.length);
wie du schon stehen hast, das macht ja besonders unverständlich, wieso du nach dem 'Senden' fragst,
ist noch das Empfangen beim Client eine offene Frage oder was genau ist das Problem?


edit:
beim Client
> fileIn.read(bytes)


----------



## Nothiing___ (12. Okt 2010)

SlaterB hat gesagt.:


> auf Server-Seite also
> > fileOut.write(bytes, 0, bytes.length);
> wie du schon stehen hast, das macht ja besonders unverständlich, wieso du nach dem 'Senden' fragst,
> ist noch das Empfangen beim Client eine offene Frage oder was genau ist das Problem?
> ...



wie empfange ich den das gesendete beim Client und wandle dies dann in ein String um. Da liegt eigentlich mein Problem


----------



## SlaterB (12. Okt 2010)

-->


SlaterB hat gesagt.:


> beim Client
> > fileIn.read(bytes)


<--

ok, man muss wieder noch 0 + bytes.length als weitere Parameter angeben und das Array sollte wirklich groß genug sein,
den Rückgabewert der Methode unbedingt merken, den dann zusammen mit dem byte-Array an den String-Konstruktor übergeben

int x = fileIn.read(bytes,0, bytes.length)
new String(bytes,0,x);


----------



## Nothiing___ (13. Okt 2010)

SlaterB hat gesagt.:


> -->
> 
> <--
> 
> ...




Herzlichen Dank hat funktioniert.


----------

