[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [escepticos] Re: ** FW: virus alert



  Borja, he vuelto a hacer pruebas y más pruebas. Tal como
tu comentabas, he parado el programa con un breakpoint y
lo he abortado desde el debuger, tambien he cerrado el
visual-c estando el programa parado y con todos sus sockets 
abiertos, etc...  el resultado es que siempre, siempre, el
servidor detecta que el socket se ha cerrado intempestivamente.
He usado visual c++ sin mfc, directamente con el api. 

  Te cuento una historia que yo he vivido ya varias veces:

  Un programador que está tan seguro de que todo lo hace bien 
que no está siquiera dispuesto a considerar la posibilidad 
de haberse equivocado. Cuando le dices que el error es suyo
se niega a comprobarlo, está tan seguro.... Al final hay que
cojer el programa, repasarlo, encontrar el error y ponerselo
delante de las narices. Luego todo son "es que yo creía que ..."
Lo curioso es que siempre tiene que ser otro el que le haga
el trabajo porque él se niega a buscar el error.

  Pues esto tuyo tiene toda la pinta de ser lo mismo. Siempre
cabe la remotísima posibilidad de que hayais encontrado un bug, 
pero en cualquier caso tu interpretacion de lo que hace y deja
de hacer windows es totalmente erronea. 

  Y haciendo gala de mis poderes paranormales, voy a aventurar
donde está error. Imaginemos que pones el breakpoint en el
cliente inmediatamente antes de un 'send' (es solo un ejemplo),
entonces el servidor se queda detenido en un 'recv', luego
vas y abortas el cliente. Bueno, pues ese 'recv' del servidor
no está contemplando la posibilidad de cierre anormal del socket.
Es decir que el windows devuelve correctamente una condicion
de error pero el servidor no se entera porque el programador no
comprueba ese error.

  Si esto fuera realmente igual a mi historia anterior, ahora
me contestarías que ya lo has mirado y "esta bien". Luego iría yo,
miraría el programa y me encontraría que está mal. Esto lo digo
solo como anécdota, no es que piense que la historia se repite ;-)

>	Si cierro un programa sin cerrar sockets el sistema operativo
>tiene que cerrarlos. Si no los cierra, chapuza al canto y punto.
>...............
>	Pues lo es. Si cierro y no se cierran las conexiones, problema
>del sistema operativo.


  Y quien lo duda ?  Te dije, y lo repito, eso lo saben tambien
los programadores de microsoft. Yo lo que digo es que los sockets
se cierran correctamente, de algún modo estais interpretando 
que los sockets permanecen abiertos cuando no es cierto. 

  Si quieres un consejo, que otro programador examine el programa,
pero que lo haga él solo. Es bastante normal que uno tenga el error
delante de las narices y no lo vea, si viene otro y el primero le
explica cómo funciona todo, al final el segundo se ciega tambien. 

>
>	De hecho, me sorprende que sea tan malo, ya que su arquitecto
>jefe se supone que era David Cutler, arquitecto de VMS y RSX-11.

 :-))  Lo que te digo, que se vuelven idiotas al entrar en microsoft.



 

Saludos :-)     -Pedro-

 http://web.jet.es/pmaicas/
 mailto:plutonio en jet.es