| | |
| | | package com.ruoyi.device.bts; |
| | | |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.net.ServerSocket; |
| | |
| | | |
| | | private String readFrame(InputStream input) throws IOException |
| | | { |
| | | ByteArrayOutputStream buffer = new ByteArrayOutputStream(); |
| | | int matched = 0; |
| | | while (true) |
| | | { |
| | | int value = input.read(); |
| | | if (value < 0) throw new IOException("Client disconnected"); |
| | | if ((byte) value == FRAME_END[matched]) |
| | | { |
| | | matched++; |
| | | if (matched == FRAME_END.length) return buffer.toString(StandardCharsets.UTF_8); |
| | | continue; |
| | | } |
| | | if (matched > 0) |
| | | { |
| | | buffer.write(FRAME_END, 0, matched); |
| | | matched = 0; |
| | | } |
| | | buffer.write(value); |
| | | } |
| | | return new String(BtsFrameReader.read(input, Integer.MAX_VALUE), StandardCharsets.UTF_8); |
| | | } |
| | | |
| | | @Override |