Un socket es un punto final de un enlace de comunicación de dos vías entre dos programas que se ejecutan a través de la red.
El cliente y el servidor deben ponerse de acuerdo sobre el protocolo que utilizarán.
Hay dos tipos de socket:
Orientado a conexión:
Establece un camino virtual entre servidor y cliente, fiable, sin pérdidas de información ni duplicados, la información llega en el mismo orden que se envía.
El cliente abre una sesión en el servidor y este guarda un estado del cliente.
El cliente utiliza la clase Socket
El servidor utiliza la clase ServerSocket
No orientado a conexión:
Envío de datagramas de tamaño fijo. No es fiable, puede haber pérdidas de información y duplicados, y la información puede llegar en distinto orden del que se envía.
No se guarda ningún estado del cliente en el servidor, por ello, es más tolerante a fallos del sistema.
Tanto el cliente como el servidor utilizan la clase DatagramSocket.