Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Vuls en Enero 29, 2022, 04:26:29 PM

Título: [SOLUCIONADO] Sockets de alto rendimiento
Publicado por: Vuls en Enero 29, 2022, 04:26:29 PM
Hola deseo crear una aplicacion cliente/servidor desde cero, y hacer que esta tenga el mejor rendimiento posible.
Que lecturas podrian recomendarme gracias.
Título: Re: Sockets de alto rendimiento
Publicado por: AXCESS en Enero 29, 2022, 06:43:51 PM
Hola Vuls

Criterio emitido con prisas y no menos cansancio:

Existen muchos open source muy buenos y ya probados en el tiempo. Esta opción es mejor que crear algo desde cero; "que ya está inventado" y disponible al uso de manera gratis:

Escribir en el buscador:

server/client open source
Título: Re: Sockets de alto rendimiento
Publicado por: Vuls en Enero 29, 2022, 08:49:51 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Hola Vuls

Criterio emitido con prisas y no menos cansancio:

Existen muchos open source muy buenos y ya probados en el tiempo. Esta opción es mejor que crear algo desde cero; "que ya está inventado" y disponible al uso de manera gratis:

Escribir en el buscador:

server/client open source

Entiendo, eso pero ese no es mi punto, mi punto es hacerlo para mi desde cero para comprender la totalidad de su funcionamineto.
Necesito que se puedan transferir KB, MB, GB...  de manera fragmentada, y pueda soportar cada paquete entrante de manera sincronica y el programa no colapse
Título: Re: Sockets de alto rendimiento
Publicado por: DtxdF en Enero 30, 2022, 12:18:39 PM
@Vuls

Debes indagar sobre los sockets de berkeley y winsocks, al menos para tener una idea de cómo se hacen en cada sistema.

En el caso de winsocks, leyendo el portal de Microsoft, y para los sockets de berkeley, hay libros y fuentes interesantes:

*.- https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-start-page-2
*.- https://es.m.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Sockets
*.- https://en.m.wikipedia.org/wiki/Berkeley_sockets

No te diré libros, porque mirando bien uno de los enlaces que te pasé, puedes conseguir alguno.

Claro, que leyendo los archivos de encabezado y los manpage suelen ayudar también.

Los sockets son una forma de usar los servicios que te proveen las capas más bajas de la capa de sesión en el modelo OSI, pero son abstractos, así que algunas veces será necesario por lo menos saber un poco sobre la capa 4 y 3, al menos en conceptos.

Actualizado:

Por cierto, veo que en el título refleja que deseas que sea de alto rendimiento, pues esto varía en muchísimas cosas. No voy a especificar cada detalle porque no valdría la pena, pero mayormente cuando se desea un alto rendimiento, con varias conexiones, de forma simultánea, y enviando varios datos en concurrencia, pues se deberá usar la asincronía o llamadas al sistema muy interesantes. Nginx tiene un pequeño hilo de referencia:

*.- http://nginx.org/en/docs/events.html

~ DtxdF
Título: Re: Sockets de alto rendimiento
Publicado por: Happiestriver en Febrero 09, 2022, 01:03:57 AM
Si tenés mucha experiencia previa con conexiones de alto rendimiento creo que DtxdF te indicó en el camino correcto. Solo agregaría que miraras named pipes y unix domain sockets. Lamentablemente no tengo mucha experiencia en el campo por lo que no te puedo recomendar ninguna lectura.
Por el otro lado, si no tenés tanta experiencia en el tema, te recomendaría que juegues con los paquetes .net y .nio de Java. Ambos paquetes te proveen con un montón de herramientas para implementar tus propios sockets sobre TCP y están excelentemente documentados.
Cualquiera sea tu caso te deseo mucha suerte con este proyecto.