tipos socket servidor que introduccion interfaz ejemplos dominios cliente sockets unix posix unix-domain-sockets fhs

sockets - servidor - socket tcp



¿Dónde colocar los puntos finales(archivos) de los sockets del dominio Unix(AF_UNIX)? (3)

¿Existe una convención en la que colocar los "archivos" que representan los puntos finales en los sockets de dominio de Unix?

Tiendo a ponerlos en /tmp/some-application-specific-subdir-name/ , pero me pregunto si hay un lugar más común.

El fondo es que POSIX no tiene clara la longitud máxima de la ruta para acceder a tales ''archivos'':

El tamaño de sun_path se ha dejado intencionalmente indefinido. Esto se debe a que diferentes implementaciones usan diferentes tamaños. Por ejemplo, 4.3 BSD usa un tamaño de 108, y 4.4 BSD usa un tamaño de 104. Dado que la mayoría de las implementaciones se originan a partir de versiones BSD, el tamaño típicamente está en el rango de 92 a 108.

Las aplicaciones no deben suponer una longitud determinada para sun_path o suponer que pueden contener {_POSIX_PATH_MAX} bytes (256).

Por lo tanto, esta "restricción" en la longitud de la ruta debe mantenerse fuera de las configuraciones de nombre de ruta / archivo de la aplicación.



En Android puedes ubicarlo en /dev/socket/


En Ubuntu, el comando netstat muestra Sockets de dominio UNIX en múltiples lugares diferentes. Algunos, sin embargo algunos, en /var/run , como JB sugirió; la mayoría de ellos en @/tmp/… (creo que @ designan nombres abstractos, que son específicos de Linux), y algunos otros en lugares específicos de varias aplicaciones. Entonces, en la práctica, la ubicación más común parece estar en /tmp , al menos en Ubuntu, que es una plataforma bastante común. Tenga en cuenta que la ubicación /tmp tiene particular sentido aquí, ya que UDS debe ser creado por cada bind y ser eliminado posteriormente (cuando el socket está cerrado, o cuando la aplicación sale, o cuando la aplicación se inicia la próxima vez y antes de su siguiente invocación para bind ).