Buenas :
En este problema se plantea un proxy.
Este una vez establecida la coneccion debera pasar los paquetes hacia y desde la internet con respecto a el servidor que segun info server comunica debera ser el encargado de la direccion de correo.
para eso uds plantean generar dos hilos y llamar a la funcion de esta manera
thread.new (pushData, clientSock, proxyclientSock);
thread.new (pushData, proxyclientSock, clientSock);
thread.new (pushData, proxyclientSock, clientSock);
que sera la encargadoa de "pasar" los paquetes desde un "sector" a otro (un hilo para cada sentido)
la funcion es la siguiente
void pushData(Socket src, Socket dst){
String data;
while (true){
data, err = src.receive();
if (data, err == nil, 'closed')
break;
remain, err = dst.send(data)
if (err == 'closed')
break;
}
close (src);
close (dst);
}
String data;
while (true){
data, err = src.receive();
if (data, err == nil, 'closed')
break;
remain, err = dst.send(data)
if (err == 'closed')
break;
}
close (src);
close (dst);
}
a mi entender falta un repeat en la parte de mandar datos.. ya que el remanente puede no ser cero y en la proxima vuelta del while podria aparecer otro paquete en data o no..
segun entiendo seria:
void pushData(Socket src, Socket dst){
String data;
while (true){
data, err = src.receive();
if (data, err == nil, 'closed')
break;
repeat
data, err2 = dst.send(data)
if (err2 == 'closed')
break;
String data;
while (true){
data, err = src.receive();
if (data, err == nil, 'closed')
break;
repeat
data, err2 = dst.send(data)
if (err2 == 'closed')
break;
until data=" " or err2 = closed
ir error2 = closed
break
}
close (src);
close (dst);
}
close (src);
close (dst);
}
desde ya gracias