How to create static ARP cache entries programmatically in Windows XP

Is there a way to set an ARP cache entry in C #?

The only way I found is using the arp utility. Address Resolution Protocol

Static entries added by arp -s will not be expired from the cache.

There is a related article on How to access ARP protocol information through .NET?

+3
source share
3 answers

, .NET, API Win32 API- IP, CreateIpNetEntry SetIpNetEntry. , P/Invoke ++.

http://msdn.microsoft.com/en-us/library/aa366071(v=vs.85).aspx

0

, , - , ARP. Vista .

' arp -s 192.168.1.12 01-02-03-04-05-06
Public Sub UpdateArpTable(IpAddress as string, MacAddress as string)
    Dim outputMessage As string = ""
    Dim errorMessage As string = ""
    Dim command As String = String.Format("-s {0} {1}", Address, MacAddress)
    ExecuteShellCommand("arp", command, outputMessage, errorMessage)
End Sub


Public Shared Sub ExecuteShellCommand(FileToExecute As String, CommandLine As String)
    Dim Process As System.Diagnostics.Process = Nothing
    Try
        Process = New System.Diagnostics.Process()
        Dim CMDProcess As String = String.Format("{0}\cmd.exe", Environment.SystemDirectory)

        Dim Arguments As String = String.Format("/C {0}", FileToExecute)

        If CommandLine IsNot Nothing AndAlso CommandLine.Length > 0 Then
            Arguments += String.Format(" {0}", CommandLine)
        End If
        Dim ProcessStartInfo As New System.Diagnostics.ProcessStartInfo(CMDProcess, Arguments)
        ProcessStartInfo.CreateNoWindow = True
        ProcessStartInfo.UseShellExecute = False
        ProcessStartInfo.RedirectStandardOutput = True
        ProcessStartInfo.RedirectStandardInput = True
        ProcessStartInfo.RedirectStandardError = True
        Process.StartInfo = ProcessStartInfo

        Process.Start()
        Process.WaitForExit()
        Process.WaitForExit()
    Finally
        ' close process and do cleanup
        Process.Close()
        Process.Dispose()
        Process = Nothing
    End Try
End Sub
0

ARP -s inet_addr eth_adr, inet_addr - IP-, eth_adr - .

  Process process = new Process();
  process.StartInfo.FileName = "arp -s 220.0.0.161 00-50-04-62-F7-23";
  process.StartInfo.CreateNoWindow = true; //Don't show window
  process.Start();
0

Source: https://habr.com/ru/post/1768684/


All Articles