[TCP / IP 11] Un ejemplo de comunicación de socket basada en el protocolo TCP

I. Introducción

En general, la conexión de la interfaz se realiza principalmente a través de http / https o servicio web, y la conexión del socket es menor y habrá algunas dificultades. Hace un tiempo, completamos los requisitos de acoplamiento de una interfaz de socket, y ahora resolveremos las ideas para la implementación.

2. Resumen de requisitos

1. Se debe proporcionar un servidor de socket para recibir los datos transmitidos por las tres partes en tiempo real

2. Especificación de mensajes en tiempo real

3. Descripción del formato de comunicación e interfaz

Método de comunicación:

La comunicación adopta el protocolo TCP y el modo de conexión corta síncrona SOCKET.

Estructura del mensaje:

El mensaje es un mensaje de longitud variable, en forma de encabezado de mensaje de longitud fija + cuerpo del mensaje de longitud variable

La estructura básica del mensaje se muestra en la siguiente figura:

Longitud del mensaje de transacción de 6 dígitos + mensaje de transacción. La longitud del mensaje de transacción de 6 dígitos se expresa como una cadena de código ASCII (6 bytes), justificada a la derecha, con 0 a la izquierda, excluyendo su propia longitud, y significa la longitud del cuerpo del mensaje. Por ejemplo, "000036fbced3fe-7025-4b5c-9cef-2421cd981f39", 000036 es la longitud y "fbced3fe-7025-4b5c-9cef-2421cd981f39" es el contenido del mensaje.

La estructura del mensaje se ajusta al formato de mensaje del estándar XML y el mensaje está codificado en GBK sin formato BOM. El nodo raíz del mensaje es el nodo Transacción. A menos que haya instrucciones especiales en el mensaje, los campos definidos en el mensaje son todos los nodos secundarios del nodo Transacción. Para conocer el formato del mensaje, consulte el ejemplo de la siguiente sección.

El objetivo de este artículo es explicar que cuando se utilizan sockets para transmitir datos, la estructura básica del mensaje generalmente incluye [encabezado del mensaje de longitud fija + cuerpo del mensaje de longitud variable]

4. Ejemplo de mensaje

petición:

000410 <? Xml version = "1.0" encoding = "GBK"?> <Req: request xmlns: req = "http://chimera.intele.com/gw/xsd/SMSGateway/Request/2013/02"> <serviceId > 29 </serviceId> <username> gre </username> <password> erg </password> <message> <recipient> +4741414141 </recipient> <content> test </content> <price> 0 </price> <settings><sendWindow><startDate>2018-06-15</startDate><startTime>16:15:00</startTime></sendWindow></settings> </message> </ req: request>

respuesta:

000683 <? Xml version = "1.0" encoding = "GBK"?> <Rsl: result xmlns: rsl = http: //chimera.intele.com/gw/xsd/TCPGateway/Result/2015/10 xmlns: sms = http : //chimera.intele.com/gw/xsd/SMSGateway/Response/2013/02 xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"> <status> <code> 1 < / code> <deion> OK </deion> </status> <sms: response> <batchReference> 0c2c002f-ccc6-4c7b-86e1-c7871b1c98b3 </batchReference> <messageStatus> <statusCode> 1 </statusCode> <statusMessage> Mensaje en cola para enviar </statusMessage> <clientReference> SMS-AFFS-000000100 </clientReference> <recipient> +4741915590 </recipient> <messageId> 6y06b02hdo00 </messageId> <sequenceIndex> 1 </sequenceIndex> </messageStatus> < / sms: respuesta> </ rsl:resultado>

 

Aspectos destacados del pasado:

Resumen del sistema de conocimiento de Java (versión 2021)

Resumen de conocimientos básicos de Java multiproceso (absolutamente clásico)

Notas de estudio super detalladas de SpringBoot

Resumen de algoritmos y estructuras de datos comunes

Patrones de diseño de Java: un análisis completo de 23 patrones de diseño (súper detallado)

Resumen de las preguntas de la entrevista de Java (con respuestas)

 

Reimpreso de: https://www.sohu.com/a/259845146_575744

Supongo que te gusta

Origin blog.csdn.net/guorui_java/article/details/114645601
Recomendado
Clasificación