Netty puede ser muy sencillo de utilizar la subcontratación.
Este artículo describe un método que utiliza JDK viene con subcontratistas, es compatible con Java o Android lado.
Adecuado para socket, Bluetooth, comunicación wifi.
1 socket formas de palo de paquetes y desembalaje
-
Terminal de recepción recibe normalmente dos paquetes, es decir, el paquete de palo y fenómeno de desembalaje no se produce, sin el uso de tal tratamiento especial. -
El receptor sólo recibe un paquete que contiene dos o más paquetes de datos, tal fenómeno es el paquete de palo, dividido manualmente. -
Se divide en un paquete de datos transmitido varias veces, cada vez que se recibe el paquete de datos no está completa, esto se llama el desembalaje, la combinación manualmente. -
Al mismo tiempo el desembalaje y paquetes de inmersión, como el envío de dos paquetes AAA y BBB, el receptor recibe dos paquetes aa, ABBB.
2 de acuerdo con una implementación de un encargo de Java sub delimitador
2.1 Si el delimitador es un salto de línea \ r o \ n o \ r \ n
public static void main(String[] args) {
String hostname = "127.0.0.1";
int port = 5209;
try (Socket socket = new Socket(hostname, port)) {
OutputStream output = socket.getOutputStream();
PrintWriter writer = new PrintWriter(output, true);
writer.println("Hello,I am client");
InputStream input = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (UnknownHostException ex) {
System.out.println("Server not found: " + ex.getMessage());
} catch (IOException ex) {
System.out.println("I/O error: " + ex.getMessage());
}
}
复制代码
2,2 separador personalizado utilizado en el Ejemplo ETX (0x03) como un delimitador
public static void main(String[] args) {
String hostname = "127.0.0.1";
int port = 5209;
try (Socket socket = new Socket(hostname, port)) {
OutputStream output = socket.getOutputStream();
PrintWriter writer = new PrintWriter(output, true);
writer.println("Hello,I am client");
InputStream input = socket.getInputStream();
Scanner scan = new Scanner(input);
scan.useDelimiter(new String(new byte[]{0x03}));
while (scan.hasNext()) {
String line = scan.next();
System.out.println(line);
}
} catch (UnknownHostException ex) {
System.out.println("Server not found: " + ex.getMessage());
} catch (IOException ex) {
System.out.println("I/O error: " + ex.getMessage());
}
}
复制代码