# Llamado a desarrolladores.

## ZeuZ_NG

Muchachos, estoy tratando de desarrollar una libreria que permita desde C++ en POSIX(BSD,Linux,etc) hacer uso facilisimo de los sockets sin meterse con las cosas de bajo nivel.

La idea es que uno pueda hacer:

```

Conexion c1("www.google.com.ar");

c1.Enviar(new std::string("GET HTTP 1.1 /"); // retorna true o false si se envia o no

std::string buffer = c1.Recibir(); // retorna los datos del servidor como un string entero o ERROR si estamos con problemas

c1.Desconectar(); // desconecta

```

Actualmente tengo un thread que ha sido visto pero no respondido en:

https://forums.gentoo.org/viewtopic-t-969224-highlight-.html

Que si bien no contiene la ultima version apreciaria que miraran porque de aca pueden salir muchos proyectos interesantes.

Primero que funcione bien, despues que sea no bloqueante (¿proxima version?) y asi nos ahorramos de libevent o de Boost(y ASIO) que son un overkill que nada mas agranda los proyectos en tamaño y complejidad.

Pienso que Gentoo es demasiado amistoso con los desarrolladores pero mi falta de conocimiento de las internas hacen que mi codigo pueda tener problemas. Luego de este post voy a actualizar el codigo, todavia no he pensado en el metodo de recibir aunque deberia ser trivial implementarlo.

La cuestion es empezarlo y despues todo si recibimos apoyo va a ser un tiro con escopeta.

Desde clientes de mensajeria livianos hasta navegadores web (deberia ser bastante sencillo implementar webkit/2 o blink con una interfaz tan facil para la red en vez de negociar con la API de C en bajo nivel a cada rato)

Por favor, es un llamado a la solidaridad, si pueden hechenle un ojo y denme una mano con ideas, y en lo posible, aportes de codigo  :Wink: 

Desde ya gracias por tomarse su tiempo para leer el mensaje y que les vaya bien.

Saludos.-

----------

## ZeuZ_NG

Vaaamos muchachos que de a poquito voy trabajando pero necesito ideas, aunque sea con el brainstorming ayudenme

----------

## Diabliyo

No entendi del todo tu proyecto ni cual seria el beneficio, peor veo que no tienes la funcion "recibir", caso raro si ya sabes hacer el envio !...

Te dejo link a un codigo que hice con sockets en C, solo pasalo a C++ la parte del recibir (es la misma funcion).

link: http://www.elrincondelc.com/nuevorincon/foros/viewtopic.php?t=8350

Saludos...

----------

## ZeuZ_NG

Simplificar mucho el tema de la API de POSIX en cuanto a conectar, recibir, y enviar se refiere, para no tener que envolver tanto codigo en C en un proyecto que use otro lenguaje.

Tal como lo indica mi snippet de codigo propuesto.

Estuve viendo tu ejemplo que mezcla selectores con la API de Windows, pero esto es para otros sistemas sacando Windows Ultimate que si tiene compatibilidad con POSIX.. (creo que profesional tambien) 

El metodo recibir lo tengo en pausa hasta que se me ocurra alguna forma no bloqueante que no interrumpa el funcionamiento del programa..

----------

## Diabliyo

Para hacerlo no bloqueando debes usar hilos y mutex en el procesamiento y acceso a datos, pero el manejo del socket podrias tener un hilo para SELECT() (selector de socket).

Mi codigo es para Linux y puedes usar el code sobre windows excepto hacer varias modificaciones.

Te dejo otro link: http://foro.elhacker.net/programacion_cc/cursocurso_de_comunicacion_de_procesos_en_c_por_diabliyo_up_13_dic-t89318.0.html

Ademas un code 100% linux (sin mods para win): http://www.elrincondelc.com/nuevorincon/foros/viewtopic.php?t=2085

Saludos !

----------

## ZeuZ_NG

Dime como ves que WSA (Windows Sockets) se puede compilar en GNU/Linux..

Por otro lado estuve leyendo un tutorial sobre AIO en POSIX y como funciona, no es necesario usar hilos, sino de hecho hacer que cada llamada termine rapidamente y vuelva a llamar constantemente a las funciones de recibir y enviar en un loop..

Dejo un link de lo mismo y voy a intentar re-escribir mi codigo..

EDIT: me olvide el link   :Laughing:  http://www.kegel.com/dkftpbench/nonblocking.html

----------

## Diabliyo

 *ZeuZ_NG wrote:*   

> Dime como ves que WSA (Windows Sockets) se puede compilar en GNU/Linux..
> 
> Por otro lado estuve leyendo un tutorial sobre AIO en POSIX y como funciona, no es necesario usar hilos, sino de hecho hacer que cada llamada termine rapidamente y vuelva a llamar constantemente a las funciones de recibir y enviar en un loop..
> 
> Dejo un link de lo mismo y voy a intentar re-escribir mi codigo..
> ...

 

Verifica mi ultimo link, es un codigo sockets en Linux. TE lo vuelvo a poner: http://www.elrincondelc.com/nuevorincon/foros/viewtopic.php?t=2085

Y sobr eel LOOP es mala idea, mejor usa SELECT(), cuando un sockete s demandado activa el send() o recv()... el loop te consumira memoria.

Saludos !

----------

