a *fast* check for whether another machine is on the local network?

Dar Scott dsc at swcp.com
Sat Jun 15 00:08:39 EDT 2013


OK,  I have been able to remove one entry from the arp table using this:

sudo arp -d 10.20.40.50 inscope en0

The result does not look good.  The mouseUp handler does add an entry to the arp table, but it is marked incomplete instead of having an MAC address.  It does the same for a computer that is available or something bogus.  Maybe I need to add the paranoid line.

Dar


On Jun 14, 2013, at 5:24 PM, Dar Scott wrote:

> close?
> platform?
> (looks OK so far on 10.6)
> 
> And suppose I'm from Missouri.  How do I know it wasn't already there?  
> 
> I tried sudo arp -d -a, but must have done something wrong.  I see no change in arp -a.  
> 
> Dar
> 
> 
> On Jun 14, 2013, at 5:02 PM, Alex Tweedly wrote:
> 
>> It does. I wondered also, so I tried it out before I posted - actual code below ...
>> 
>> on mouseup
>>  open datagram socket to "10.0.0.33:4000"  -- NB we don't care if this succeeds or not
>>  put shell("arp -a") into t
>>  put t
>> end mouseup
>> 
>> -- Alex.
>> 
>> 
>> 
>> On 14/06/2013 23:09, Dar Scott wrote:
>>> Cool idea.  I wonder though.  Will UDP actually trigger arp before the first write?  I'm not saying it won't, I'm just surprised.  It would be cool it it did.
>>> 
>>> Dar
>>> 
>>> 
>>> On Jun 14, 2013, at 2:30 PM, Alex Tweedly wrote:
>>> 
>>>> Sorry, I've been offline for a while, so this reply is coming kind of late, but I don't think anything in the subsequent discussion invalidates it.
>>>> 
>>>> 
>>>> If you don't want to wait a second, you could do
>>>> (for address 10.0.0.232)
>>>> 
>>>>  -- NB we don't care if this succeeds or not
>>>>  open datagram socket to "10.0.0.232:4000"
>>>>  -- if paranoid:   wait for 10 ms
>>>>  put shell("arp -a") into temp
>>>>  filter temp with "*10.0.0.232*"
>>>> 
>>>> The open socket may or may not work - but it will resolve the IP address first, and hence get an entry in the arp table. Then you can check variable 'temp' to verify the IP address is there, and that it has an actual mac address corresponding to it (rather than "incomplete").
>>>> 
>>>> NB "open datagram socket" will return without waiting for the socket to open; I think it may do the addr resolution before returning, but you could be cautious / paranoid and do a "wait 10 ms" before doing the arp check.
>>>> 
>>>> btw - corner case - if you have a router doing proxy arp replies (e.g. to handle hosts that can't do default route), then this will falsely appear to work - but AFAIK that is a very, very uncommon situation nowadays.
>>>> 
>>>> -- Alex.
>>>> 
>>>> On 13/06/2013 22:52, Dar Scott wrote:
>>>>> On Jun 13, 2013, at 3:02 PM, Dr. Hawkins wrote:
>>>>> 
>>>>>> Is there a *fast* way to see if another machine is currently on the
>>>>>> local network, by name (somemachine.local) or otherwise, from within
>>>>>> livecode?
>>>>>> 
>>>>>> There's always sending a message and waiting for it to hang, but I'd
>>>>>> like something that happens quickly.
>>>>> On OS X:
>>>>> 
>>>>> You can use shell("arp -a") and look whether the IP address is included.  The list associates the underlying Ethernet address with the IP address.  It will expire after 20 minutes of non use.  So, this really means this computer talked to that computer in the last 20 minutes.
>>>>> 
>>>>> I think the best way has to involve a message.  To keep it fast, use an IP address rather than the host name.  Use a method with a fast timeout.
>>>>> 
>>>>> You might be able to use shell(" ping -c 1 -t 1 10.9.8.7") but that would take a second if the computer is not there.
>>>>> 
>>>>> If you have a service set up on that computer then you might be able to try that.
>>>>> 
>>>>> On Windows:
>>>>> 
>>>>> Similar
>>>>> 
>>>>> 
>>>>> Dar
>>>>> 
>>>>> 
>>>>> ---------------------------
>>>>> Dar Scott
>>>>> dba
>>>>> Dar Scott Consulting
>>>>> 8637 Horacio Place NE
>>>>> Albuquerque, NM 87111
>>>>> 
>>>>> Lab, home, office phone: +1 505 299 9497
>>>>> For Skype and fax, please contact.
>>>>> dsc at swcp.com
>>>>> 
>>>>> Computer programming and tinkering,
>>>>> usually in supporting those developing in
>>>>> LiveCode--typically by making LiveCode
>>>>> controls, libraries and externals, and
>>>>> sometimes by writing associated
>>>>> microcontroller firmware.
>>>>> ---------------------------
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> use-livecode mailing list
>>>>> use-livecode at lists.runrev.com
>>>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>> 
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> 
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list