Multi-standalone communication

Richard Gaskin ambassador at
Thu Dec 7 15:26:01 EST 2006

Richard Miller wrote:
> The computer in question is not set up with networking.

I'm not sure if UDP on the same machine is prevented even without 
external networking enabled.  Maybe someone here can explain.

But if all you need is to pass some info from one app to another, 
depending on the frequency of the exchange you may find using a file 
isn't a bad option.

While it's true that accessing a file's contents is relatively slow, 
that is relative.  More importantly, checking for the existence of a 
file is much faster than checking its contents, in many cases quite 
acceptably so.

You could conceivably have the listening app check a folder in 
specialFolderPath("temporary") for a file of a specific and 
unlikely-to-be-used name (e.g., "MySpecialDataFile34583895"), using a 
timer set for, say, once every half-second or so, depending on the 
frequency you need (could be less, could be more; the less often it 
checks the better of course).

The sending app would write to that file any time it needs to send info 
to the other app, and the other app would see that it's there and if it 
is then it reads it, deletes the file, and does whatever it needs with 
the data:

on ListenForData
   put (specialFolderPath("temporary")&"/MySpecialDataFile34583895" \
     into tTempFile
   if there is a file tTempFile then
     put url ("file:"&tTempFile) into tMyData
     delete file tTempFile
     -- do something with the data here:

   end if
   send "ListenForData" to me in 500 millisecs -- half a second
end ListenForData

On a relatively slow Mac (1GHz G4) it takes about a quarter millisecond 
to get the file name using specialFolderPath and check its existence.

If you get the file name only once and store it in a variable, the time 
to just check for its existence drops to only 0.0165 ms:

local sTempFile

on InitListening
   put (specialFolderPath("temporary")&"/MySpecialDataFile34583895" \
     into sTempFile
end InitListening

on ListenForData
   if there is a file sTempFile then
     put url ("file:"&sTempFile) into tMyData
     delete file sTempFile
     -- do something with the data here:

   end if
   send "ListenForData" to me in 500 millisecs
end ListenForData

  Richard Gaskin
  Managing Editor, revJournal
  Rev tips, tutorials and more:

More information about the Use-livecode mailing list