Home  +  Forums  +  C++ and Sockets  +  C++ and SQL: MySQL, sqlite, ODBC  +  Miscellaneous Projects
Logo
~Sockets~
~New~
~Examples~
~Contact~
english

C++ Sockets Library

Programación básica de Sockets en Unix / Windows

Esta es una libreria de clases en C++ bajo licencia GPL que 'mapea' el berkeley sockets C API, y funciona tanto en algunos sistemas unix como en win32. Las características incluidas, aunque no limitadas son: SSL support, IPv6 support, tcp and udp sockets, encrypted tcp, http protocol, altamente configurable el manejo de errores. Las pruebas de Testeo han sido efectuadas en: Linux and Windows 2000, and to some part on Solaris and Mac OS X.

Examples   httpget | chat | client/server | mud | proxy | smtp proxy | httpd | chat 2 | udp | icmp

Únete a nuestra comunidad. Para estar enterado de los ultimos cambios y modificaciones a la C++ sockets library, puedes suscribirte en el proyecto en C++ sockets library freshmeat.net project page. Si estas utilizando la C++ sockets library, o tienes alguna pregunta o sugerencia, visita este enlace C++ sockets library message board.

Esta libreria está disponible para *BSD-Ports system for the Darwin OS. Aqui tienes el enlace.

Tambien está disponible a través de la FreeBSD Ports Collection. Por Aquí.

Un poco de historia

Cuando construí esta libreria, hubo cosas que quise tener en cuenta. No queria terminar la cosa del codigo en C++ que tuviese que ser usado de la misma manera que el berkeley socket C API normalmente( connect/bind/accept - check result, write - check result, read - check result, etc, etc ). Otra cosa era tener la capacidad de manejar multiples Socket's en el mismo Thread (Hilo de ejecución); La librería debería ser singlethreaded - pero no limitada a un solo Thread. Asi que.. No queria hacer un fd_set para un select() y volver a llamarlo de nuevo, se acabó el escribir código para aceptar una conexión - Esto lo he conseguido una y otra vez con cada proyecto de trabajo en red con el que he trabajado.

Una decisión temprana, fue trabajar con que cada socket individual...fuese tratado como objeto individual. y asi fue como nació la clase Socket. La clase Socket, en si misma, tiene todas las funciones necesarias para la resolución de direcciones (hostname to ip, ip to hostname etc). Es propietaria del descriptor de fichero/ SOCKET handle. Pero no puede hacer nada mas. El código para poder hacer otras cosas con ella, esta en las clases Socket derivadas.

Tomemos como ejemplo; una lista de sockets activos monitorizados por una llamada al sistema mediante select() . Los eventos resultantes de la llamada a select() y la logica de transmisión (read/write/connect/timeout etc) son reportados a cada socket, por medio de un callback del tipo:

  •   Socket::OnRead()
  •   Socket::OnWrite()
  •   Socket::OnConnect()
  •   Socket::OnAccept()

La lista de sockets utilizados, se encuentra en la clase SocketHandler. para "monitorear" los sockets, se efectuarán una serie de llamadas al método Select().

Ultima version

====> Descargate Sockets-2.3.7.tar.gz, actualizado con fecha 2009-10-11 ( Changelog )

Source code documentation (generated by Doxygen). Selecciona "File List" de la página de índices de Doxigen para ver todos los archivos del ejemplo. Luego selecciona "[code]" para ver el código fuente de ese archivo. Los archivos con el nombre en minúsculas suelen ser el punto de inicio, y los archivos con las letras mayúsculas son la implementacion de la clase del mismo nombre que el archivo..

Diagrama de la Clase & Documentación

Dependencies

Projects using C++ Sockets

Links

Page, code, and content Copyright (C) 2021 by Anders Hedström