2010-07-30 12 views
10

He escrito una aplicación Java simple que interactúa con varias instancias de sí mismo utilizando sockets. La primera instancia asume automáticamente el rol del servidor, escucha en un puerto específico y todas las instancias posteriores se conectan a él.Evite ventanas emergentes de Windows Firewall con sockets en localhost

El problema al que me enfrento es que Windows Firewall aparece preguntándome si quiero desbloquear el programa de "aceptar conexiones de red entrantes". El asunto es: , no importa si deja la aplicación bloqueada, porque las instancias de la aplicación están siempre en la misma máquina, por lo que siempre funcionará.

Mi pregunta es: ¿puedo informar a Windows de alguna manera que ni siquiera quiero que se acepten las conexiones de red entrantes?

+0

Aclarar. ¿Desea que el firewall de Windows bloquee automáticamente todas las solicitudes de red entrantes? – Caladain

+1

Quiero que el socket esté escuchando solo en el host local, * no * para el tráfico de red entrante. En otras palabras, no quiero que Windows Firewall muestre ninguna ventana emergente en primer lugar. –

Respuesta

12

Utilice el three parameter constructor de la clase ServerSocket para especificar también la dirección IP que el servidor debe escuchar. De esta forma, puede restringir el servidor para que solo escuche en 127.0.0.1, a diferencia del valor predeterminado de 0.0.0.0. Ver this related SO question, para más detalles.

EDIT: Es preferible usar InetAddress.getByName (null) para obtener la dirección local.

+2

Genial, esto funciona! Había intentado ese constructor con el último parámetro siendo 'InetAddress.getLocalHost()', pero esa es evidentemente la dirección de red del localhost. Sustituirlo por 'InetAddress.getByName (null)' evita la ventana emergente del firewall. –

Cuestiones relacionadas