tipos son redes que puertos prioridad para los cómo conexión como comandos cambiar adaptador abiertos winapi networking windows-xp tcp

winapi - redes - que son los comandos de red



"Reparar" las conexiones de red de forma programática/desde la línea de comandos (12)

¿Alguien sabe exactamente qué hace Windows XP cuando hace clic en "Reparar" en una conexión de red? Me gustaría hacer lo mismo programáticamente o desde una línea de comando.

Hice una búsqueda en Google y encontré este artículo , que tiene una buena explicación, pero no creo que esté completo. Puedo reproducir de manera confiable una condición en la que pierdo conectividad de red y al hacer clic en el botón Reparar corrige el problema, pero no funciona ejecutar los comandos en ese artículo.



¡Simplemente se hace con 1 llamada api!

ver en Win32 api forum news: //comp.os.ms-windows.programmer.win32 donde el código había sido dado (C)


En el caso de una conexión inalámbrica, también desactiva y vuelve a habilitar el adaptador de red. Sospecho que algo así es lo que falta en el artículo.


Parece que hay algunas cosas más que hace:

  • La renovación del protocolo de configuración dinámica de host (DHCP) se renueva: ipconfig / renew
  • El caché del protocolo de resolución de direcciones (ARP) se vacía: arp -d
  • Recarga de la memoria caché del nombre NetBIOS: nbtstat -R
  • Se envía la actualización del nombre NetBIOS: nbtstat -RR
  • El caché del Sistema de nombres de dominio (DNS) se vacía: ipconfig / flushdns
  • Registro de nombre DNS: ipconfig / registerdns

Sin embargo, una cosa es que si tiene una conexión que se rompe tan a menudo que necesita reparar su red mediante programación, esta podría no ser la solución que está buscando.


Gracias, muchachos, creo que lo descubrí. Los pasos en el artículo de MS KB publicado por lpfavreau están casi completos. Eso es lo que intenté y no funcionó. Sin embargo, si hago ipconfig /release primero, entonces parece funcionar. Sospecho que el botón "Reparar" hace eso sin que esté documentado explícitamente. Para mi caso particular, también tuve que borrar las rutas ("ruta -f"). Entonces, los comandos que terminé ejecutando al final son:

route -f ipconfig /release ipconfig /renew arp -d * nbtstat -R nbtstat -RR ipconfig /flushdns ipconfig /registerdns

También encontré un código C para llamar a la funcionalidad real de "Reparar conexiones", aunque no lo he probado, vea la última publicación aquí .


ipconfig /renew


Además de los puntos enumerados por lpfavreau y Evgeny, la conexión de red "Reparación" también hace lo siguiente. - Restablezca el dispositivo de red MAC (y probablemente PHY). Esto hace que el dispositivo reinicie todas sus estructuras de datos locales, borrando cualquier condición de error en la que se haya quedado atorado. - Limpie las colas de paquetes Rx / Tx en el controlador del dispositivo y la interfaz de red, enjuagándolo de cualquier cola antigua. paquetes


Hay un comando para hacerlo desde la línea de comando.

Citando http://en.kioskea.net/faq/sujet-848-windows-xp-repairing-the-network-connection-using-command-line :

En Windows XP, hay una pequeña función que le permite reparar una conexión de red. Vaya a las opciones de Conexiones de red en el Panel de control (Panel de control / Conexiones de red), haga clic con el botón derecho en la conexión de red que desee y elija la opción de reparación.

Es posible ejecutar el mismo comando utilizando la utilidad Netsh, dentro de la siguiente línea de comando:

netsh int ip reset c:/network-connection.log

c: / network-connection.log representa la dirección del archivo en el que se almacenarán los informes

El comando netsh int ip ... le permite restablecer el TCP / IP.

Con Windows XP Service Pack 2, puede usar:

netsh winsock reset catalog

Restablecer el socket que administra el TCP / IP. Esto se puede usar para manejar problemas de red (problema del navegador, problemas relacionados con la dirección IP, etc.)


Experimento una conexión wifi, que se cae de vez en cuando en mi caja de XP, sin ninguna razón aparente, y la única forma de solucionar esto es haciendo clic con el botón derecho en el ícono de conexión wifi en la bandeja del sistema y repararlo.

Para hacer esto desde la línea de comandos, sigo los pasos de este artículo y funciona para mí: http://wlanbook.com/enable-disable-wireless-card-command-line/


Lo que funcionó para mí:

netsh interface show interface

para mostrar el nombre de la interfaz que para mí era "Ethernet 2" y luego:

netsh interface set interface "Ethernet 2" DISABLED netsh interface set interface "Ethernet 2" ENABLED


Esto me ha funcionado.

Cree un archivo por lotes (llamé a mine netrepair.bat) y colóquelo en un directorio donde tenga permisos de ejecución. Use el bloc de notas para crear el archivo.

escriba las siguientes líneas en el archivo

ipconfig / renew arp -d * nbtstat -R nbtstat -RR ipconfig / flushdns ipconfig / registerdns

luego guarda y cierra.

Abra un terminal de cmd como administrador, vaya a la carpeta en la que se guarda netrepair.bat y luego escriba

netrepair.bat

en la línea de comando.

Eso es.

Consulte http://support.microsoft.com/kb/289256 para obtener explicaciones de lo que hacen los comandos


Aquí hay un archivo XML de Task Manager (impórtelo en el Administrador de tareas) que ejecutará una interfaz set de interfaz netsh "Ethernet" DISABLED "seguido de un" ENABLED ", 5 segundos después de despertarse.

<?xml version="1.0" encoding="UTF-16"?> <Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2015-01-15T10:19:28.1634612</Date> <Author>MACHINE/user</Author> </RegistrationInfo> <Triggers> <EventTrigger> <Enabled>true</Enabled> <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="System"&gt;&lt;Select Path="System"&gt;*[System[Provider[@Name=''Microsoft-Windows-Power-Troubleshooter''] and EventID=1]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription> <Delay>PT5S</Delay> </EventTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>S-1-5-18</UserId> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>true</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>true</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>P3D</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>C:/Windows/System32/netsh.exe</Command> <Arguments>interface set interface "Ethernet" DISABLED</Arguments> </Exec> <Exec> <Command>C:/Windows/System32/netsh.exe</Command> <Arguments>interface set interface "Ethernet" ENABLED</Arguments> </Exec> </Actions> </Task>