Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Llamado a desarrolladores.
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
ZeuZ_NG
Guru
Guru


Joined: 10 Sep 2008
Posts: 453
Location: Near /dev/urandom | /dev/null

PostPosted: Fri Sep 06, 2013 6:59 pm    Post subject: Llamado a desarrolladores. Reply with quote

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:
Code:

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 ;)

Desde ya gracias por tomarse su tiempo para leer el mensaje y que les vaya bien.
Saludos.-
_________________
| Intel Core i7 920. | Intel DX58SO Extreme. |
| 8gb DDR3 1666mHz | 1TB 7200 RPM WD HDD.|
Unix´s guru view of sex:
unzip ; strip ; touch ; grep ; finger ; \
mount ; fsck ; more ; yes ; umount ; sleep.
Back to top
View user's profile Send private message
ZeuZ_NG
Guru
Guru


Joined: 10 Sep 2008
Posts: 453
Location: Near /dev/urandom | /dev/null

PostPosted: Mon Sep 09, 2013 1:26 am    Post subject: Reply with quote

Vaaamos muchachos que de a poquito voy trabajando pero necesito ideas, aunque sea con el brainstorming ayudenme
_________________
| Intel Core i7 920. | Intel DX58SO Extreme. |
| 8gb DDR3 1666mHz | 1TB 7200 RPM WD HDD.|
Unix´s guru view of sex:
unzip ; strip ; touch ; grep ; finger ; \
mount ; fsck ; more ; yes ; umount ; sleep.
Back to top
View user's profile Send private message
Diabliyo
Guru
Guru


Joined: 12 May 2008
Posts: 385
Location: Mexico

PostPosted: Sat Sep 21, 2013 5:14 am    Post subject: Reply with quote

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...
Back to top
View user's profile Send private message
ZeuZ_NG
Guru
Guru


Joined: 10 Sep 2008
Posts: 453
Location: Near /dev/urandom | /dev/null

PostPosted: Sat Sep 21, 2013 10:59 am    Post subject: Reply with quote

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..
_________________
| Intel Core i7 920. | Intel DX58SO Extreme. |
| 8gb DDR3 1666mHz | 1TB 7200 RPM WD HDD.|
Unix´s guru view of sex:
unzip ; strip ; touch ; grep ; finger ; \
mount ; fsck ; more ; yes ; umount ; sleep.
Back to top
View user's profile Send private message
Diabliyo
Guru
Guru


Joined: 12 May 2008
Posts: 385
Location: Mexico

PostPosted: Sat Sep 21, 2013 6:48 pm    Post subject: Reply with quote

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 !
Back to top
View user's profile Send private message
ZeuZ_NG
Guru
Guru


Joined: 10 Sep 2008
Posts: 453
Location: Near /dev/urandom | /dev/null

PostPosted: Mon Sep 23, 2013 12:45 pm    Post subject: Reply with quote

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 :lol: http://www.kegel.com/dkftpbench/nonblocking.html
_________________
| Intel Core i7 920. | Intel DX58SO Extreme. |
| 8gb DDR3 1666mHz | 1TB 7200 RPM WD HDD.|
Unix´s guru view of sex:
unzip ; strip ; touch ; grep ; finger ; \
mount ; fsck ; more ; yes ; umount ; sleep.
Back to top
View user's profile Send private message
Diabliyo
Guru
Guru


Joined: 12 May 2008
Posts: 385
Location: Mexico

PostPosted: Mon Sep 23, 2013 2:55 pm    Post subject: Reply with quote

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..
EDIT: me olvide el link :lol: http://www.kegel.com/dkftpbench/nonblocking.html


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 !
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum