2011-04-13 14 views
9

Duplicar posible:
Should I close a socket (TCPIP) after every transaction?debe mantenerse abierta o tomas derribado

Digamos que tengo algún tipo de comunicación entre procesos que funciona mediante sockets.

caso de mi proceso de establecer una conexión y mantenerla abierta (1 hilo por cliente o similar) el envío de datos cuando se necesita; ¿o es un mejor enfoque para simplemente establecer una conexión, enviar los datos que deseo, cerrarlo e ingresar de nuevo mi estado de espera?

lo que suele ser el enfoque a este problema?

+0

Sólo por curiosidad, ¿por qué tomas más de canalizaciones con nombre? –

+0

En mi caso, estoy construyendo un puente entre una aplicación de Android y C#, así que no creo que las tuberías sean apropiadas (o posibles). –

+0

Interproceso se refiere a la comunicación entre diferentes procesos en la misma máquina, por lo que pregunté, si están en máquinas diferentes, entonces el servidor del cliente o punto a punto es la palabra correcta. –

Respuesta

3

enchufes locales no tienen tanta sobrecarga, ya que no tome la pila TCP/IP y se implementan utilizando canalizaciones con nombre. Mantener una toma de corriente abierta y cerrada no supondría mucha diferencia.

+1

Sockets locales omite la pila de TCP/IP solo si abre específicamente un socket de dominio Unix, cuando esté disponible. – gby

2

Cualquier recurso, ya sea el archivo, toma de corriente, conexión de base de datos o dispositivo de hardware, toma tiempo y usa el procesador y la memoria para abrir, ya que tiene a buscar recursos, calcular acceso de seguridad y colaborar en la contabilidad.

Apertura y cierre entre cada mensaje se acaba de desperdiciar recursos de CPU y memoria.

Mantenerlo abierto durante mucho tiempo también es peligroso, pero debe dejarlo abierto y decidir el mejor valor de tiempo de espera para cerrarlo automáticamente cuando un extremo haya muerto.

Cuestiones relacionadas