1. A method of sending a relay message, comprising: contacting local devices, which are devices that are within range of a sending device through a wireless interface, and requesting identification of available devices; propagating by the local devices the request for identification of available devices through a peer-to-peer network; returning the identification of available devices to the sending device; building a list of available devices, the list including identification of said local devices in a local device list; receiving a relay message from the sending device through a wireless interface at a relaying device, wherein said relay message includes a recipient identifier indicating a recipient device and includes application data for an application program; checking said relay message to determine whether said relaying device is said recipient device, wherein when the relaying device is the recipient device, the relaying device does not relay the relay message; checking, when the relaying device is not the recipient device, the local device list indicating at least one local device to determine whether said recipient device is a local device; when said recipient device is a local device, sending said relay message from said relaying device addressed only to said recipient device through said wireless interface and not sending said relay message addressed to other local devices; and when said recipient device is not a local device, sending said relay message from said relaying device addressed to at least one local device included in said local device list through said wireless interface; wherein said sending device has a direct connection to said relaying device, said relaying device has a direct connection to each local device indicated in said local device list, and said sending device does not have a direct connection to said recipient device.