Guía Beej de Programación en Redes

Uso de sockets de Internet

Brian "Beej" Hall


beej@piratehaven.org

Copyright © 1995-2001 por Brian "Beej" Hall

Traducción al español a cargo de Damián Marqués Lluch <dmrq@arrakis.es >

Historial de Revisiones

Versión de la revisión: 1.0.0

Agosto, 1995

Revisado por: beej

Versión inicial.

Versión de la revisión: 1.5.5

13 de Enero, 1999

Revisado por: beej

Última versión HTML

Versión de la revisión: 2.0.0

6 de Marzo, 2001

Revisado por: beej

Convertido a DocBook XML, correcciones, adiciones.

Versión de la revisión: 2.0.1

7 de Marzo, 2001

Revisado por: beej

Correcciones menores.

Versión de la revisión: 2.0.2

16 de Marzo, 2001

Revisado por: beej

inet_ntoa() tendría que haber sido inet_aton() in algunos lugares.

Versión de la revisión: 2.0.3

2 de Abril, 2001

Revisado por: beej

Valores de retorno de inet_aton() corregidos, se cambia selecterver, se añade recvtimeout() y se corrigen errores ortográficos.

Versión de la revisión: 2.1.0

3 de Mayo, 2001

Revisado por: beej

Se corrige el desbordamiento de buffer en client.c y listener.c . Ahora, server.c , hace una limpieza robusta de zombis. Se añade la política de respuesta a correos electrónicos.

Versión de la revisión: 2.2.0

24 de Junio, 2001

Revisado por: beej

Actualización de QnA, Windows, talker.c, información sobre PF_INET, demo de accept(), se eliminan bzero() s, setsockopt() para Solaris.

Versión de la revisión: 2.2.1

25 de Junio, 2001

Revisado por: beej

Mínima actualización de QnA, se añade la noticia de asociación com Amazon.com

Versión de la revisión: 2.3.0

25 de Julio, 2001

Revisado por: beej

Se añaden algunas entradas a la sección de QnA, se depura selectserver.c , se añade WSACleanup(), y se clarifica el tamaño de struct in_addr.


Tabla de Contenidos


1. Introducción
1.1. Destinatarios
1.2. Plataforma y compilador
1.3. Sitio web oficial
1.4. Nota para programadores Solaris/SunOS
1.5. Nota para programadores Windows
1.6. Política de respuesta a correos electrónicos
1.7. Replicación
1.8. Nota para traductores
1.9. Copyright y distribución
2. ¿Qué es un socket ?
2.1. Dos tipos de sockets de internet
2.2. Tonterías de bajo nivel y teoría de redes
3. structs y manipulación de datos
3.1. ¡Convierte a valores nativos!
3.2. Direcciones IP y como tratarlas
4. Llamadas al sistema
4.1. socket()--¡Consigue el descriptor de fichero!
4.2. bind()--¿En qué puerto estoy?
4.3. connect()--¡eh, tú!
4.4. listen()--Por favor, que alguien me llame
4.5. accept()--"Gracias por llamar al puerto 3490."
4.6. send() y recv()--¡Háblame, baby !
4.7. sendto() y recvfrom()--Háblame al estilo DGRAM
4.8. close() y shutdown()--¡Fuera de mi vista!
4.9. getpeername()--¿Quién eres tú?
4.10. gethostname()--¿Quién soy yo?
4.11. DNS--Tú dices: "whitehouse.gov", Yo digo: "198.137.240.92"
5. Modelo Cliente-Servidor
5.1. Un servidor sencillo
5.2. Un cliente sencillo
5.3. Sockets de datagramas
6. Técnicas moderamente avanzadas
6.1. Bloqueo
6.2. select() --Multiplexado de E/S síncrona
6.3. Gestión de envíos parciales con send()s
6.4. Consecuencias de la encapsalución de datos
7. Referencias adicionales
7.1. Páginas del manual ( man)
7.2. Libros
7.3. Referencias en la web
7.4. RFCs
8. Preguntas más comunes (QnA)
9. Declinación de responsabilidad y solicitud de ayuda



Siguiente



Introducción