Pregunta

Yo uso la clase ServerSocket java para aplicaciones de servidor. ¿Acepta el método () participan en TCP / IP apretón de manos?

A medida que veo en TCP / IP y volcado de comando netstat, los clientes a establecer conexiones con antes de aceptar método se llama y regresar objeto Socket.

¿Es java emitir o no entiendo aceptar () semántica?

¿Fue útil?

Solución

En general, en Unix, si marca el zócalo con listen (), el sistema operativo empieza a aceptar las conexiones. Cuando se llama a la función accept (), el sistema operativo simplemente las manos sobre la conexión ya abierta. Escuchar toma un parámetro que le permite especificar el número de 'no aceptado' conexiones abiertas permite el sistema operativo (es decir, el tamaño de la cola).

Otros consejos

El método accept no participa activamente en el apretón de manos, per se. El envío y la recepción de los mensajes se implementa en la pila de protocolos TCP / IP, por lo general en el espacio del núcleo del sistema operativo.

Sin embargo, el método accept() está implicado en el sentido de que la pila TCP / IP sólo enviará el mensaje SYN-ACK si algún proceso tiene una llamada activa accept() para un socket enlazado con la dirección IP y el puerto correspondiente. Cuando se completa el enlace de tres vías, la llamada al método accept() completará.

Si no hay llamadas de proceso accept() en el tiempo el mensaje SYN entrante será dado de baja por el núcleo y el cliente remoto con el tiempo se el tiempo de espera del intento de conexión. (Por otro lado, si la dirección IP / puerto no está obligado, entonces el núcleo es probable que responda con un RST, y el cliente remoto verá una "conexión rechazada".)

Aceptar devoluciones solamente después de que el cliente y el servidor están conectados (apretón de manos, etc.).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top