Programacion de servicios en red C++

Iniciado por Nanoc, 13 Mayo 2010, 18:47 PM

0 Miembros y 1 Visitante están viendo este tema.

Nanoc

Hola, buenas, me propongo programar un servicio y me vienen dos problemas desde el principio.

1º Cual es la forma apropiada de establecer los sockets de modo que pueda atender a un indeterminado numero de personas y todo por el mismo puerto tcp?

2º Lo mismo pero para realizar consultas a bases de datos

Espero que alguien pueda ayudarme  ;D


biribau

A que te refieres con servicio? un servicio típico de escuchar en un puerto? para atender a varias lo mejor es que un hilo acepte conexiones y cuando entre una, cree un hilo trabajador que provea del servicio. También se puede hacer monohilo más difícil con espera no bloqueante y con una cola de eventos o alguna otra especie de context switch(o hilos) implementado a mano.

Nanoc

Eso puedo hacerlo con winsock? hay que hacer algo distinto que poner un solo socket, es decir, creo un socket y en cuanto se conecte alguien creo otro y lo pongo a la esucha?

biribau

Sí, sería algo así como:

while True:
       conexion = accept(socket)
       start_thread(worker, conexion)

Nanoc

y no tendre problemas al crear todos los sockets en el mismo puerto?

biribau

No, porque una conexión TCP está identificada por 2 IP y 2 puertos, 1 puerto siempre es el mismo(el tuyo), pero el otro no.

Nanoc

entiendo, de todos modos si alguien pudiera enseñarme algun codigo donde se vea la estructura que tomarian los sockets se lo agradeceria mucho

dof

Te recomiendo que busques en google la guia beej, te explican todo telacionado con lo sockets