tengo unos problemas con una aplicacion.
la aplicacion al iniciarse inicia todos los sockets correctamente.
la aplicacion luego de destruirse a si misma y reiniciarse deja de conectar un socket.
pues yo pensé que el socket no se estaba deleteando correctamente por lo que use diversos códigos batch para matar todos los procesos adjuntados a los puertos así de esta manera se liberara el puerto y este disponible nuevamente:
setlocal
set PORT=7134
REM Find the PID of the process using the specified port
for /f "tokens=5" %%a in ('netstat -aon ^| findstr :%PORT%') do (
set PID=%%a
)
REM Kill the process with the found PID
if defined PID (
echo Killing process with PID %PID%
taskkill /PID %PID% /F
) else (
echo No process found using port %PORT%
)
endlocal
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :7134') DO TaskKill.exe /PID %%P
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :3456') DO TaskKill.exe /PID %%P
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :4587') DO TaskKill.exe /PID %%P
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :7598') DO TaskKill.exe /PID %%P
FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :9876') DO TaskKill.exe /PID %%P
timeout 5
Claro que primero probe cerrar correctamente los puertos en el programa involucrado pero crashea.
saben algun modo efectivo por el cual podria cerrar el puerto para que mi aplicacion pueda reiniciarse sin problemas? o que es lo que no estoy vindo? ademas de que mi aplicacion al cerrarlo crashea.
ya arregle el crash pero algo sigue fallando.
Si reinicio la computadora todo vuelve a funcionar normal si no la reinicio no conectan.
COMO PODRIA HACER DESDE BATCH, EL MISMO EFECTO QUE DA REINICIAR LA COMPUTADORA PARA QUE TODO SALGA CORRECTAMENTE?
UP a ver si alguien me ayuda ( estoy probando matando explorer.exe y reiniciandolo :/ )
NO FUNCIONÓ
Hola, mala idea matar los procesos, eso sólo se debe hacer en casos muy puntuales, pero en tu caso lo que tenés que hacer es cerrar todos los puertos abiertos, vos los abrís y luego cerras la aplicación, pero primero tenés que cerrar todos los puertos abiertos y luego cerrar la aplicación.
Saludos
Lo resolví fixeando todo para que nunca tenga que autodestruirse pero de todos modos me quedo con la duda de por que desp de todo no volvía a construirse.
no te preocupes por eso por que la funcion on destroy llama a la funcion on close