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
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.
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?
Sí, sería algo así como:
while True:
conexion = accept(socket)
start_thread(worker, conexion)
y no tendre problemas al crear todos los sockets en el mismo puerto?
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.
entiendo, de todos modos si alguien pudiera enseñarme algun codigo donde se vea la estructura que tomarian los sockets se lo agradeceria mucho
Te recomiendo que busques en google la guia beej, te explican todo telacionado con lo sockets