Determining LAN IP
Mark Talluto
userev at canelasoftware.com
Mon Aug 30 11:33:43 EDT 2010
On Aug 26, 2010, at 3:50 PM, Monte Goulding wrote:
> Hi Everyone
>
> To determine the domain name of the computer Rev is running on we use hostName() and to turn that into an IP we use hostNameToAddress(hostName()). If you are behind a router this will return your LAN IP however if your computer is using a modem it will return a public IP. I need a reliable LAN IP so I can ask the user to enter it into their iPhone to connect to my sync server. Should I just be parsing ifconfig and ipconfig and forget about hostName() or what?
>
> Cheers
Hi Monte,
We parse out both ifConfig and ipConfig to get the IP of a system. We also wrote out a pairing routine to connect computers together (software remote control for our acuity systems). It can scan an entire range on the same subnet in about two seconds on most systems. If you would like the code send me a message. Below is the code we use for parsing. We made some modifications that support the subtleties of the various Win versions and wireless vs ethernet.
--> MY IP
function getMyIp
switch (the platform)
case "MacOS"
put shell("/sbin/ifconfig en0") into tEthernetConfig
put shell("/sbin/ifconfig en1") into tWirelessConfig
if char 1 to 4 of tIpConfig = "zsh:" then
return "0.0.0.0"
else
set the itemdel to "."
--CHECK FOR ETHERNET CONNECTION
get matchText(tEthernetConfig,"(?s)inet (.*?) ",retVal) -- These are spaces on either side of (.*?)
if it is false then
--CHECK FOR WIRELESS CONNECTION
get matchText(tWirelessConfig,"(?s)inet (.*?) ",retVal) -- These are spaces on either side of (.*?)
if it is false then
return "0.0.0.0"
end if
end if
end if
return retVal
break
case "Win32"
put (there is not a file (specialFolderPath("system") & "/IPCONFIG.EXE")) into tWindowsError
put (there is not a file (specialFolderPath("system") & "/SYSTEM32/IPCONFIG.EXE")) into tSys32Error
if tWindowsError and tSys32Error then
return "0.0.0.0"
else
set the hideConsoleWindows to true
put shell("ipconfig/all") into tIpConfigAll
put tIpConfigAll into temp
--ETHERNET XP & VISTA
put offset("Ethernet adapter Local Area Connection:",temp) into tOffsetResult
delete char 1 to (tOffsetResult-1) in temp
get matchText(temp,"IP Address[\. ]*: ([A-Z0-9\.]*)",retVal)
--WIRELESS XP & VISTA
if retVal is empty then
put tIpConfigAll into temp
put offset("Ethernet adapter Wireless Network Connection:",temp) into tOffsetResult
delete char 1 to (tOffsetResult-1) in temp
get matchText(temp,"IP Address[\. ]*: ([A-Z0-9\.]*)",retVal)
end if
if retVal is empty then --ETHERNET WIN 7
put tIpConfigAll into temp
get matchText(temp,"IPv4 Address[\. ]*: ([A-Z0-9\.]*)",retVal)
end if
if it is false then --NO NETWORK CONNECTION FOUND
return "0.0.0.0"
else
return retVal
end if
end if
break
end switch
return "0.0.0.0"
end getMyIp
Best regards,
Mark Talluto
http://www.canelasoftware.com
More information about the use-livecode
mailing list