|
Question : Converting code to VB.NET
|
|
Trying to convert the following code to VB.NET In my attempt to do this on my own I must have missed something. My code is below also.
Also reference my origional question that brought me to this code http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_22454308.html
Code to convert*************** [DllImport("iphlpapi.dll")] public static extern int SendARP( int DestIP, int SrcIP, [Out] byte[] pMacAddr, ref int PhyAddrLen );
IPAddress addr = IPAddress.Parse("192.168.0.1"); byte[] mac = new byte[6]; int len = mac.Length; SendARP( (int)addr.Address, 0, mac, ref len ); string macAddress = BitConverter.ToString( mac, 0, len );
My conversion attempt*****************************
Public Class MACRetriever
Declare Function SendARP Lib "iphlpapi.dll" Alias "SendARP" (ByVal DestIP As Int32, ByVal SrcIP As Int32, ByRef pMacAddr() As Byte, ByRef PhyAddrLen As Int32) As Int32
Public Shared Function GetMac() As String Dim addr As Net.IPAddress = Net.IPAddress.Parse("10.3.1.245") Dim addrMe As Net.IPAddress = Net.IPAddress.Parse("10.3.1.247") Dim mac(6) As Byte Dim Mac2(6) As Byte
Dim b As Byte For Each b In mac b = 1 Next Dim len As Int32 = mac.Length Try SendARP(addr.Address, addrMe.Address, mac, len)
Dim macAddress As String = BitConverter.ToString(Mac2, 0, len) Return macAddress Catch ex As Exception
End Try Return "No Luck" End Function
End Class
|
|
Answer : Converting code to VB.NET
|
|
I figured out what went wrong I was passing the byte array as byref and it needs to be byval. The following works.
Declare Function SendARP Lib "iphlpapi.dll" Alias "SendARP" (ByVal DestIP As Int32, ByVal SrcIP As Int32, ByVal pMacAddr() As Byte, ByRef PhyAddrLen As Int32) As Int32
Public Shared Function GetMac(ByVal ForIP As String) As String Try Dim addr As Net.IPAddress = Net.IPAddress.Parse(ForIP) Dim addrMe As Net.IPAddress = Net.IPAddress.Parse("10.3.1.247") Dim mac(5) As Byte Dim IP() As Byte Dim IPInt As Int32
IP = addr.GetAddressBytes() IPInt = BitConverter.ToInt32(IP, 0)
Dim len As Int32 = mac.Length SendARP(BitConverter.ToInt32(addr.GetAddressBytes(), 0), 0, mac, len)
Dim macAddress As String = BitConverter.ToString(mac, 0, mac.Length) Return macAddress
Catch ex As Exception
End Try Return "" End Function
|
|
|
|