Чтение из сокета без блокировки
- private static String readFromSocket(Socket sock) throws Exception {
- InputStream in = sock.getInputStream();
- StringBuilder result = new StringBuilder(" ");
- int timeout = 0;
- int a;
- while (true) {
- a = in.available();
- if (a > 0) {
- int r = in.read();
- if (r == -1) {
- break;
- }
- result.append((char) r);
- timeout = 0;
- } else {
- Thread.sleep(10);
- a = in.available();
- if (a == 0) {
- timeout++;
- }
- if (timeout > 40) {
- break; // timeout
- }
- }
- }
- return result.toString();
- }
Если считывать из сокета как из обычного потока, то он зависнет