Peer-to-peer networking has altered the basic notions of how computers share data. In a more traditional data sharing paradigm, computers share information in a structured manner where one computer is a server and another computer is a client. This traditional concept is known as the “client-server” model. Although the manner in which a data transfer takes place is different, peer-to-peer networking and client-sever transactions typically both rely on a ubiquitous computer data network, for example a local area network or a wide area network (e.g. the Internet). One distinguishing characteristic of the peer-to-peer model vis-à-vis the client-server model is that a computer operating in a peer-to-peer configuration is capable of acting both as a client and as a server, depending upon a particular data transaction. For example, when a computer in a peer-to-peer network needs data, that computer can operate as a client. The same computer can also provide data as a server when called upon to do so by another computer communicatively associated with the first computer in a peer-to-peer network.
Peer-to-peer networking has gained wide popularity as a means for sharing files. Peer-to-peer networking is especially popular in those instances when the shared files are media content files, for example audio content and video content files. One aspect of such file sharing is that users are able to specify what files are desired and then search for the files on other computers that are attached to a peer-to-peer network. The standard mechanisms for discovering files in a peer-to-peer network works fairly well because the computers attached to the peer-to-peer network are typically available when a search for a desired file is performed.
With the proliferation of mobile devices, many users of such devices attempt to share files with each other using a wireless connection. For example, a user of a digital music device may want to share a music file with another user. Up until now, both users would need to collaborate with each other to affect the transfer. Cell phone users may want to share ring-tones or photographs. Again, both users would need to agree to the transfer and collaborate to see the transfer through to fruition. The need for such collaboration could be substantially reduced if peer-to-peer networking could be used between wireless devices.
Unfortunately, the notion of peer-to-peer networking breaks down in the realm of wireless devices. One reason for this is the fact that mobile devices maintain only a transient connection with other mobile devices. This is especially true when the mobile devices interact with each other in local networking structures such as Blue Tooth and 802.11 wireless networks that do not bridge over to a wide area network. As such, it is only when two wireless devices are in proximity to each other that a local connection between them can be formed. As such, file sharing through peer-to-peer networking is limited by the short duration and limited bandwidth of a connection established between such devices. In fact, a peer-to-peer network has little chance of operating in a realm where the network is only transiently present because there is simply no means for discovering file resources in the usual peer-to-peer manner. Any attempt to search for a required file would be limited in scope to other wireless devices proximate to the device requesting the file. Another problem with any type of file sharing is that of piracy of copyrighted content. The use of any peer-to-peer networking to share copyrighted files, e.g. music files in the form of MP3, promotes copyright infringement.
A method and apparatus for sharing a file comprising recognizing a neighbor node, establishing an application-level connection with the neighbor node, determining a file that is to be shared with the neighbor node and conveying a portion of the determined file with the neighbor node.
Several alternative embodiments will hereinafter be described in conjunction with the appended drawings and figures, wherein like numerals denote like elements, and in which:
The physical structure of intelligent wireless device includes a wireless network interface. One form of a wireless network interface includes an 802.11 wireless networking interface. Another form of a wireless network interface includes a Blue-Tooth interface. Doubtless, continued evolution of intelligent wireless networking will yield yet other forms of wireless network interfaces. It should be noted that the present method can be applied in any wireless networking structure and is not dependent upon any particular form of a wireless network interface herein described.
In many situations, there may be nearly identical files that contain nearly identical content. As such, these nearly identical files may be identically named. For example, there may be several files that each includes a different rendition of the national anthem. Although each file may sound similar to the human ear, they may not necessarily contain the same digital representation of the national anthem. This problem is magnified by the fact that several legitimate sources of a particular audio track may promulgate different versions of the audio track, each having the same file name (e.g. “STAR SPANGLED BANNER”). These different renditions may vary according to encoding rate or encoding resolution, just to name a few. In order to alleviate this problem, one variation of the present method provides for associating an identity code with a promulgated file. The identity code, according to one illustrative use case of the present method, is included in a file name by which a particular file is accessed by a file management system (e.g. an operating system). According to yet another illustrative use case, the identity code is included in a file header which is stored as part of the file itself. It should be appreciated that various forms of storage can be used to store the identity code and the various illustrative use cases presented herein are not intended to limit the scope of the claims appended hereto. It should also be noted that this problem is common to all types of files and is not necessarily limited to audio content files. For example, static image files and video files are susceptible to this type of misidentification. Furthermore, the claims appended hereto are not intended to be limited to these examples. A wide variety of file types can be misidentified. Consider yet another example of an electronic book file (e-book). And e-book file is yet another example of a file type that can be misidentified and this and other examples presented herein are not intended to limit the scope of the claims appended hereto.
The user various example embodiments of a wireless file provider device 705 as heretofore described further includes various functional modules each of which comprises an instruction sequence that can be executed by the processor. An instruction sequence that implements a functional module, according to one alternative embodiment, is stored in the memory 730. The reader is advised that the term “minimally causes the processor” and variants thereof is intended to serve as an open-ended enumeration of functions performed by the processor as it executes a particular functional module (i.e. instruction sequence). As such, an embodiment where a particular functional module causes a processor to perform functions in addition to those defined in the appended claims is to be included in the scope of the claims appended hereto.
The functional modules (and their corresponding instruction sequences) described thus far that enable wirelessly sharing a file are, according to one alternative embodiment, imparted onto computer readable medium. Examples of such medium include, but are not limited to, random access memory, read-only memory (ROM), Compact Disk (CD) ROM, Digital Versatile Disk (DVD), floppy disks, hard disk drives and magnetic tape. This computer readable medium, which alone or in combination can constitute a stand-alone product, can be used to convert a general-purpose computing device into a device for wirelessly providing files wherein said device is capable of providing a file wirelessly according to the techniques and teachings presented herein. Accordingly, the claims appended hereto are to include such computer readable medium imparted with such instruction sequences that enable execution of the present method and all of the teachings herein described.
Stored in the memory 730 of one example embodiment are several functional modules including a peer-to-peer module 735, a file determination module 740 and a conveyance module 755. A portion of the memory 730 is used to store files. This portion of the memory is referred to as a file cache 750. It should also be noted that one alternative embodiment of a file determination module 740 comprises an authentication module 742. According to yet another alternative embodiment, the file provider device 705 further comprises an incentive module 760. According to yet another alternative embodiment, the memory 730 is also used to store a list of remotely available files 752.
One alternative embodiment of a file provider device 705 supports the conveyance of a file according to a segment identifier. Accordingly, one alternative embodiment of the file cache 750 includes a file content field 825 that is segregated into individual segments (825A, 825B, 825C, etc.).
Once a connection is established with a recognized neighbor node, the processor 700 executes the file determination module 740. When executed by the processor 700, the file determination module 740 minimally causes the processor 700 to determine a file to be provided to the recognized neighbor node. The conveyance module 755, when executed by the processor 700, minimally causes the processor to provide 870 from the file cache 750 a determined file while the connection 711 to the neighbor node remains viable. The connection 711 established with the neighbor node comprises an application-level connection established by means of the wireless interface 710. According to one alternative embodiment of the conveyance module, a file is retrieved 870 according to a filename (stored in the filename field 800). The content of the file is retrieved 870 from the file cache 750 from a field called content 825. The retrieved content is then directed 875 to the peer-to-peer module 735 as the processor 700 continues to execute the conveyance module 755.
According to one alternative embodiment, the file determination module 740 causes the processor to determine a file by minimally causing the processor 700 to receive a user identifier by means of the first established application-level connection. The user identifier, typically, is a user identifier that is affiliated with a user of a first recognize neighbor node. It should be appreciated that user identifier, according to one alternative embodiment, includes therein a group identifier. Typically, the group identifier will identify a particular user as a member of a particular group. As such, this alternative embodiment of a file determination module 740 minimally causes the processor 700 to select one or more files stored in the file cache 750 wherein the group identifier matches the entry in a user group field 836 included in the file cache 750.
According to yet another alternative embodiment, the file determination module 740 causes the processor to determine which file is to be shared with a first recognized neighbor node by minimally causing the processor 700 to execute the peer-to-peer module 735. By executing the peer-to-peer module 735, the processor 700 is minimally caused to recognize a second neighbor node and then establish a second application-level connection with the second recognize neighbor node using the wireless interface 710. Once a second application-level connection is established with a second neighbor node, the processor, as it continues to execute this alternative embodiment of a file determination module 740, is further minimally caused to receive a list of one or more available files from the second neighbor node. According to this alternative embodiment, the file determination module 740 further minimally causes the processor to store in a remotely available files list 752 a filename in a filename field 827 and a node identifier in a node identifier field 803. As such, the file determination module 740 causes the processor 700 to build a list of one or more files available on a second recognized neighbor node. The file determination module 740 further minimally causes the processor 700 to convey the list of one or more files available on a second recognized neighbor node to the first recognized neighbor node. According to this alternative embodiment, the file determination module 740 causes the processor 700 to convey this list to the first recognized neighbor node using the first established application-level connection which has been established with the first recognized neighbor node.
According to yet another alternative embodiment, the file determination module 740, when executed by the processor 700, causes the processor to determine a file by minimally causing the processor to receive 850 a file request from the neighbor node by means of the application level connection 711. Based on the file request, the processor will select 855 a file from the file cache 750. This alternative embodiment of a file determination module 740 further minimally causes the processor to receive an authentication token from the neighbor node by means of the application level connections 711. This alternative embodiment of the file determination module 700 further minimally causes the processor 700 to authenticate the selected file according to the authentication token and execute the conveyance module 735 when the file is determined to be authentic.
According to one alternative example embodiment, the file determination module 740 includes an authentication module 742. According to this alternative embodiment, the file determination module 740 causes the processor to receive an authentication token in the form of a Global Release Identifier. The authentication module 742, when executed by the processor 700, causes the processor to authenticate the selected file by minimally causing the processor to compare a received Global Release Identifier with a Global Release Identifier for the selected file. Accordingly, this alternative embodiment of the authentication module 742 causes the processor 700 to retrieve a Global Release Identifier from the file cache 750, e.g. from a field called “Global Release Identifier” 805, and compare it with a Global Release Identifier received from the neighbor node by way of the wireless interface (i.e. by means of the wireless connection 711 established by the processor 700 as it continues to execute the peer-to-peer module 735).
According to another alternative example embodiment, the file determination module 740 also includes an authentication module 742. According to this alternative embodiment, the file determination module 740 causes the processor to receive an authentication token in the form of an identity code. The authentication module 742 of this alternative embodiment, when executed by the processor 700, causes the processor 700 to authenticate the selected file by minimally causing the processor 700 to compare a received identity code with an identity code for the selected file. Accordingly, this alternative embodiment of the authentication module 742 causes the processor to retrieve an identity code from the file cache 750, e.g. from the a field called “identity code” 810, and compare it with an identity code received from the neighbor node by way of the wireless interface (i.e. by means of the wireless connections 711 established by the processor 700 as it continues to execute the peer-to-peer module 735).
According to yet another alternative example embodiment, the file determination module 740 also includes an authentication module 742. According to this alternative embodiment, the file determination module 740 causes the processor to receive an authentication token in the form of calculated value. The authentication module 742, when executed by the processor 700, causes the processor 700 to authenticate the selected file by minimally causing the processor 700 to compare a received calculated value with a calculated value for the selected file. Accordingly, this alternative embodiment of the authentication module 742 causes the processor to retrieve a calculated value from the file cache 750 from a calculated value field. According to yet another alternative embodiment, the authentication module 742 causes the processor 700 to retrieve a hash code from a field called a hash code 815. As such, the calculated value received by the processor of this alternative embodiment comprises a hash code for the selected file. In yet another alternative embodiment, the authentication module 742 minimally causes the processor 700 to calculate a hash code for the selected file according to the content stored in the content field 825 included in the file cache 750. Then, the processor 700 is further caused to compare the received hash code with either a retrieved hash code or a calculated hash code.
According to yet another alternative embodiment, the authentication module 742 causes the processor 700 to retrieve a CRC code from a field called CRC 815. As such, the calculated value received by the processor of this alternative embodiment comprises a CRC code for the selected file. In yet another alternative embodiment, the authentication module 742 minimally causes the processor 700 to calculate a CRC code for the selected file according to the content stored in the content field 825 included in the file cache 750. Then, the processor 700 is further caused to compare the received hash code with either a retrieved CRC code or a calculated CRC code.
According to one alternative embodiment, the wireless file provider device 705 includes a conveyance module 755 that, when executed by the processor, minimally causes the processor to provide a file from the file cache 750 according to a segment identifier. Accordingly, a segment identifier is received 877 from a neighbor node by means of a wireless connection 711 established by the processor as it executes the peer-to-peer module 735. Generally, the conveyance module 755 causes the processor to respond to a segment identifier by retrieving a portion of a file content stored in the file cache, wherein the file content field 825 is segregated into a plurality of segments (825A, 825B, 825C, etc) and wherein retrieval is accomplished from a segment of the file content field 825 according to the received segment identifier.
In yet another alternative embodiment, the conveyance module 755 causes the processor 700 to convey a determined file to a first recognized neighbor node by minimally causing the processor 700 to execute the peer-to-peer module 735. By executing the peer-to-peer module 735, the processor 700 is caused to recognize a second neighbor node. The peer-to-peer module 735 further minimally causes the processor to establish a second application-level connection with the second recognized neighbor node. Using the second application-level connection, the conveyance module 755 further minimally causes the processor 700 to receive a portion of a determined file by way of the second establish connection. As such, a portion of the determined file is received from the second recognized neighbor node. Once received from the second recognized neighbor node, the conveyance module 735 further minimally causes the processor 700 to direct the received portion of the determined file to the first recognized neighbor node. According to this alternative embodiment, this is accomplished as the processor continues to execute the conveyance module 755, wherein the conveyance module 755 further minimally causes the processor 700 to direct the received portion of the determined file to the first established application-level connection.
One alternative example embodiment of a file provider device 705 further includes an incentive module 760. The incentive module 760, when executed by the processor 700, minimally causes the processor 700 to establish an incentive when a file is conveyed from the file cache 750 to a neighbor node using the application level connection 711. In yet another alternative embodiment, the incentive module 760 causes the processor 700 to establish an incentive by minimally causing the processor 700 to communicate to a neighbor node by means of the wireless connection 711 a sales price for a file stored in the file cache 750. Typically, this is accomplished by the processor 700 by retrieving 885 from the file cache a sales price from a sales price field 830 included in a record for particular file stored in the file cache 750. The incentive module 760 then minimally causes the processor 700 to direct 890 the sales price to the peer-to-peer module 735. The processor, as it continues to execute the peer-to-peer module 735, is then minimally caused to convey the sales price to the neighbor node by means of the wireless connection 711. The neighbor node can either accept or reject the sales price. In the event that the neighbor node accepts the sales price, the incentive module further minimally causes the processor 700 to receive from the neighbor node by means of the application level connection 711 an acceptance 893 of the price. Along with the acceptance, the incentive module 760 further minimally causes the processor to receive from the neighbor node a user identifier 893. As the processor continues to execute the incentive module 760, it is further minimally caused to store in the memory 730 an acceptance record 897. Typically, the acceptance record 897 includes the user identifier that was received from the neighbor node. In an alternative embodiment, the acceptance record 897 further includes a sales price. In yet another alternative embodiment, the acceptance record 897 further includes a file identifier, which comprises at least one of a global release identifier, an identity code and a file name.
According to one alternative embodiment, the incentive module 760 causes the processor to establish an incentive by minimally causing the processor 700 to communicate to a neighbor node by means of the application level connection 711 a sales price for a file stored in the file cache 750. In this alternative embodiment, the incentive module 760 further minimally causes the processor to receive a counter-price from the neighbor node. The incentive module 760 of this alternative embodiment further minimally causes the processor to retrieve from the file cache a minimum price value from a minimum price field 835 included in the file cache 750. An acceptance 897 is then stored in the memory by the processor 700 when the counter-price received by the processor from the neighbor node is equal to or greater than the minimum sales price retrieved by the processor 700 as it continues to execute the incentive module 760.
In yet another alternative embodiment, the incentive module 760, when executed by the processor 700, further minimally causes the processor to convey to a purchase manager by way of the wireless interface 710 the contents of the acceptance record 897. According to one alternative embodiment, the incentive module 760 also causes the processor 700 to direct to the purchase manager by way of the wireless interface 710 at least one of a global release identifier, a file name and an identity code. According to various alternative embodiments, this includes at least one of the user identifier received from the neighbor node and the sales price. According to this alternative embodiment, the incentive module 760 also minimally causes the processor 700 to convey to the purchase manager by way of the wireless interface 710 a provider identifier. Typically, the provider identifier 880 is received from the memory 730 by the processor 700 as it executes the incentive module 760.
According to one alternative embodiment, the incentive module 760 causes the processor 700 to establish connection with a purchase manager using a short-range wireless interface (e.g. BlueTooth or 802.11). According to yet another alternative embodiment, the incentive module 760 causes the processor 700 to establish connection with a purchase manager using a wireless cellular data interface (e.g. the G3 network). This list of examples is not meant to limit the scope of the claims appended hereto.
While the present method and apparatus has been described in terms of several alternative and exemplary embodiments, it is contemplated that alternatives, modifications, permutations, and equivalents thereof will become apparent to those skilled in the art upon a reading of the specification and study of the drawings. It is therefore intended that the true spirit and scope of the claims appended hereto include all such alternatives, modifications, permutations, and equivalents.
The present application is a continuation-in-part of application Ser. No. 10/922,243 filed on Aug. 18, 2004 entitled “Method and Apparatus for Wirelessly Sharing a File Using an Application-Level Connection” by Singer et al., the priority date of which is hereby claimed and which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 10922243 | Aug 2004 | US |
Child | 11002735 | Dec 2004 | US |