# Socket Stream in String



## nitschchedu (6. Jan 2009)

Hallo Hallo,
da noch Anfänger bin im Java fehlt mir das Verständnis dafür wie ich den Orginal Stream vom Socket in einen String bekomme?


```
private Socket client;
private PrintWriter out;
private BufferedReader in;

.....

this.in = new BufferedReader(new InputStreamReader(this.client.getInputStream()));

.....

private String ReadPacket()
    {
        String buff = "";
        char[] buffer = new char[65536];

        try
        {
            int anz = this.in.read(buffer, 0, 65536); <- nicht das was drinstehen sollte
            buff = new String(buffer, 0, anz);
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }

        System.out.println(HexString.toHexString(buff));
        return buff;
    }
```

Mit Wireshark sind manche Zeichen anders. 

Altes Thema dazu: http://www.java-forum.org/de/viewtopic.php?t=80296&start=30&postdays=0&postorder=asc&highlight=


----------



## Murray (6. Jan 2009)

Wie schon im anderen Thread geschrieben: keinen Reader verwenden (Reader sind nur etwas für textuelle Daten).

In etwas so:

```
String str = "";
        byte[] buffer = new byte[65536];
        try {
           int anz = this.client.getInputStream().read(buffer, 0, 65536);
           StringBuilder sb = new StringBuilder( anz*2);
           for ( int i=0; i<anz; i++) {
              sb.append( Integer.toHexString( buf[i] & 0xff));
           }
           str = sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
```

Wobei sich aber weiterhin die Frage stellt, wozu so eine Hex-String-Repräsentation später dienen soll - falls irgendwelche Bit-Operationen mit den einzelnen Bytes passieren sollen, ist der String Weg sicher nicht optimal.


----------



## nitschchedu (6. Jan 2009)

Woah so geht es oO aber sowas in der art hatte ich auch, bis auf das "0xff"


----------



## Murray (6. Jan 2009)

In Java ist ein byte vorzeichenbehaftet; der Wertebereich läuft von -128 bis 127. Das Verunden mit 0xff mach daraus einen int von 0 bis 255.

Hier ein Beispiel.


----------



## nitschchedu (7. Jan 2009)

Finde ich bissel Komisch aber gut zu wissen, vielen Dank Murray


----------

