WO2013121487A1 - 情報処理装置、情報処理方法及びプログラム - Google Patents

情報処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
WO2013121487A1
WO2013121487A1 PCT/JP2012/007588 JP2012007588W WO2013121487A1 WO 2013121487 A1 WO2013121487 A1 WO 2013121487A1 JP 2012007588 W JP2012007588 W JP 2012007588W WO 2013121487 A1 WO2013121487 A1 WO 2013121487A1
Authority
WO
WIPO (PCT)
Prior art keywords
server
notification
information processing
message
unit
Prior art date
Application number
PCT/JP2012/007588
Other languages
English (en)
French (fr)
Inventor
真人 島川
Original Assignee
ソニー株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソニー株式会社 filed Critical ソニー株式会社
Priority to CN201280069142.2A priority Critical patent/CN104094243B/zh
Priority to US14/373,968 priority patent/US20140365606A1/en
Priority to JP2013558589A priority patent/JP5962676B2/ja
Publication of WO2013121487A1 publication Critical patent/WO2013121487A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/212Monitoring or handling of messages using filtering or selective blocking

Definitions

  • This technology relates to an information processing apparatus that can communicate with a plurality of devices via a network.
  • XMPP Extensible Messaging Presence Protocol
  • NAT Network Address Translation
  • a server using the XMPP is arranged on the cloud, and this server mediates all communication between devices, so that each device can communicate with each other without being affected by a NAT router or a proxy server / firewall. Can be done.
  • Patent Document 1 As a document related to XMPP, for example, there is the following Patent Document 1.
  • an object of the present technology is to provide an information processing apparatus, an information processing method, and a program that can reduce the load on the system on the cloud side and can handle an enormous number of devices with one device. There is.
  • an information processing apparatus includes a communication unit and a control unit.
  • the communication unit is connected to the first device, the second device, and the always-on server that is always connected to the second device via the network as needed via the network. Communication is possible.
  • the control unit receives notification request information for requesting to receive data addressed to the second device from the first device and to send a notification message notifying the presence of the data to the second device.
  • the communication unit can be controlled to transmit the data to the second device in response to a request from the second device that has transmitted to the always-on server and received the notification message.
  • the information processing apparatus when the information processing apparatus receives data addressed to the second device from the first device, the information processing device transmits a notification message to the second device via the always-connected server, and the second device Data can be sent in response to access. Therefore, the information processing apparatus can reduce its own load by allowing the always-connected server to maintain the connection with the first device and the second device and to notify the existence of data.
  • the always-on server does not require complicated processing and requires only a minimum communication buffer, so that it can be connected to an extremely large number of first devices and second devices. As a result, the number of devices that can be handled indirectly by one information processing apparatus increases significantly.
  • the data includes all kinds of data such as moving images, still images, sounds, texts, messages, programs, and the like.
  • the information processing apparatus is typically a server apparatus, but is not limited thereto, and may be any other device.
  • the information processing apparatus may further include a storage unit.
  • the second device may communicate with the information processing apparatus and the always-on server via a communication relay device.
  • the control unit stores the information so as to store information related to the transfer setting.
  • the unit may be controlled.
  • the control unit uses the stored information to transmit the notification message directly to the second device instead of transmitting the notification request information or in addition to transmitting the notification request information.
  • the communication unit may be controlled.
  • the communication relay device (router) on the second device side supports the NAT-Traversal mechanism based on the UPnP-IGD (Universal-Plug-and-Play-Internet-Gateway-Device) protocol, the so-called NAT exceeded, It is also possible to send a notification message directly to the second device.
  • UPnP-IGD Universal-Plug-and-Play-Internet-Gateway-Device
  • control unit When a global IP address is assigned to the second device, the control unit sends the notification message to the notification device instead of transmitting the notification request information or in addition to transmitting the notification request information.
  • the communication unit may be controlled to transmit directly to the second device.
  • the information processing apparatus can also transmit a notification message directly to the second device when the second device can be accessed without going through the communication relay device.
  • the communication unit may be controlled as described above.
  • the information processing apparatus may further include a storage unit.
  • the control unit includes a value based on a hash value obtained from a predetermined hash function based on the device identification information of each of the first device and the second device, and each of the plurality of information processing devices. You may create the table which defined the corresponding relationship with this identification information.
  • the control unit may control the storage unit so as to store the created table, and determines another information processing apparatus corresponding to the second device based on the stored table. May be.
  • the information processing apparatus can easily determine another information processing apparatus corresponding to the second device by using the table.
  • the control unit When the user identification information for uniquely identifying the user who owns each of the first device and the second device is set, the control unit replaces the device identification information with the user identification information.
  • the above table may be created using
  • An information processing apparatus includes a communication unit and a control unit.
  • the communication unit can always communicate with the first device and the second device via a network.
  • the communication unit can communicate with the mediation server that mediates transmission / reception of data between the first device and the second device on the network as necessary.
  • the control unit sends a notification message for notifying the existence of the data from the mediation server.
  • the communication unit can be controlled to receive notification request information for requesting transmission to the second device and to transmit the notification message to the second device based on the notification request information.
  • the information processing apparatus can greatly increase the number of devices that can be indirectly handled by one intermediary server, and reduce the load on the intermediary server.
  • An information processing apparatus includes a communication unit and a control unit.
  • the communication unit can communicate with the first server on the network as necessary, and can communicate with the second server on the network.
  • the control unit receives a notification message for notifying the presence of data transmitted from another information processing apparatus from the second server, and based on the received notification message, the control unit transmits the data to the first server.
  • the communication unit can be controlled to receive from
  • An information processing method includes establishing a connection with a first device via a network and receiving data addressed to a second device from the first device.
  • notification request information for requesting transmission of a notification message notifying the presence of the data to the second device is transmitted to a server that is always connected to the second device.
  • a connection is established in response to a request from the second device that has received the notification message, and the data is transmitted to the second device.
  • a program causes the information processing apparatus to execute a reception step, a first transmission step, and a second transmission step.
  • a connection is established with the first device via the network, and data addressed to the second device is received from the first device.
  • notification request information for requesting transmission of a notification message notifying the presence of the data to the second device is transmitted to a constantly connected server that is always connected to the second device. Is done.
  • a connection is established with the second device in response to a request from the second device that has received the notification message, and the data is transmitted to the second device.
  • FIG. 1 is a diagram illustrating a network configuration of a system according to a first embodiment of the present technology. It is the block diagram which showed the hardware constitutions of the messaging server in the said system. It is the block diagram which showed the hardware constitutions of the device in the said system. It is the block diagram which showed the software module structure of each node in the said system. It is the figure which showed the example of the notification means list
  • FIG. 12 is a flowchart illustrating a flow of server determination processing corresponding to a device according to the second embodiment of the present technology. It is a figure showing an example of a messaging server allocation table created in a 2nd embodiment of this art. It is a figure showing an example of a notice server allocation table created in a 2nd embodiment of this art. It is the figure which showed the example of the resolution table for network address determination of the messaging server created in 2nd Embodiment of this technique. It is a figure showing an example of a resolution table for network address determination of a notice server created in a 2nd embodiment of this art.
  • 14 is a flowchart illustrating an operation flow of a connection processing unit of a messaging server according to the second embodiment of the present technology.
  • 12 is a flowchart illustrating an operation flow of a connection management unit of a messaging server according to the second embodiment of the present technology.
  • 12 is a flowchart illustrating a flow of operations of a message transfer unit of a messaging server according to the second embodiment of the present technology. It is the figure which showed the network configuration of the system in 3rd Embodiment of this technique.
  • 12 is a flowchart illustrating a flow of operation of a connection management unit of a messaging server in the third embodiment of the present technology.
  • FIG. 1 is a diagram showing a network configuration of a system according to the present embodiment.
  • this system includes a messaging server 100 and a notification server 200 on the cloud, and a plurality of devices 300 that can be connected to these servers via a WAN (Wide Area Network).
  • WAN Wide Area Network
  • one messaging server 100 and one notification server 200 are provided on the cloud.
  • the device 300 includes, for example, a smartphone, a mobile phone, a tablet PC (Personal® Computer), a desktop PC, a notebook PC, a PDA (Personal® Digital Assistant), a portable AV player, an electronic book, a digital still camera, a camcorder, a television device, and a PVR. It can be any information processing apparatus such as (Personal Video Recorder), game machine, car navigation system, digital photo frame, and the like. Although only two devices 300A and 300B are shown in the figure, the number of devices 300 may be three or more.
  • Each device 300 may communicate with the messaging server 100 and the notification server 200 via the communication relay device 310, or may directly communicate with those servers without via the communication relay device 310.
  • Each device 300 can communicate with the notification server 200 through a constant connection, while communicating with the messaging server 100 by establishing a connection as necessary.
  • the messaging server 100 communicates with the notification server 200 and each device 300 by establishing a connection as necessary.
  • the communication relay device 310 has a function of relaying communication between an inner (device 300 side) network and an external (cloud side) network, and protects the difference in addresses used in both networks and security. Because of the mechanism, it means that an external server makes it impossible to designate and connect a specific internal device unless a special means is used. Examples of such communication relay device 310 include a NAT router, a proxy server, and a firewall.
  • the messaging server 100 functions as a server that mediates communication between the devices 300 (for example, transmission and reception of messages).
  • the notification server 200 functions as one of notification means for transmitting a notification message indicating that data (message) transmitted from a certain device 300 exists to the device 300 that is the destination of the data. Other notification means will be described later.
  • the messaging server 100, the notification server 200, and the device 300 may be collectively referred to as “nodes”.
  • FIG. 2 is a diagram showing a hardware configuration of the messaging server 100.
  • the messaging server 100 includes a CPU (Central Processing Unit) 11, a ROM (Read Only Memory) 12, a RAM (Random Access Memory) 13, an input / output interface 15, and a bus 14 for connecting them together. Is provided.
  • CPU Central Processing Unit
  • ROM Read Only Memory
  • RAM Random Access Memory
  • the CPU 11 appropriately accesses the RAM 13 or the like as necessary, and comprehensively controls each block of the messaging server 100 while performing various arithmetic processes.
  • the ROM 12 is a non-volatile memory in which an OS to be executed by the CPU 11, firmware such as programs and various parameters are fixedly stored.
  • the RAM 13 is used as a work area for the CPU 11 and temporarily holds the OS, various applications being executed, and various data being processed.
  • a display unit 16 an operation receiving unit 17, a storage unit 18, a communication unit 19 and the like are connected to the input / output interface 15.
  • the display unit 16 is a display device using, for example, an LCD (Liquid Crystal Display), an OELD (Organic ElectroLuminescence Display), a CRT (Cathode Ray Tube), or the like.
  • LCD Liquid Crystal Display
  • OELD Organic ElectroLuminescence Display
  • CRT Cathode Ray Tube
  • the operation receiving unit 17 is, for example, a pointing device such as a mouse, a keyboard, a touch panel, and other input devices.
  • the operation reception unit 17 is a touch panel
  • the touch panel can be integrated with the display unit 16.
  • the storage unit 18 is, for example, a nonvolatile memory such as an HDD (Hard Disk Drive), a flash memory (SSD; Solid State Drive), or other solid-state memory.
  • the storage unit 18 stores the OS, various applications, and various data. Particularly in the present embodiment, the storage unit 18 stores programs such as a plurality of software modules described later, and a database such as a notification means list and a connection information list.
  • the communication unit 19 is a NIC or the like for connecting to the WAN 50, and is responsible for communication processing with the notification server 200 and the device 300.
  • the hardware configuration of the notification server 200 is the same as the hardware configuration of the messaging server, description thereof is omitted.
  • hardware corresponding to the CPU 11, the storage unit 18, and the communication unit 19 of the messaging server 100 is referred to as a CPU 21, a storage unit 28, and a communication unit 29, respectively.
  • the storage unit 28 stores programs such as a plurality of software modules, which will be described later, and a database such as a connection information list.
  • FIG. 3 is a diagram illustrating a hardware configuration of the device 300.
  • the hardware configuration of the device 300 is basically the same as the hardware configuration of the server 100. That is, the device 300 includes a CPU 31, a ROM 32, a RAM 33, an input / output interface 35, a bus 34 that connects them, a display unit 36, an operation reception unit 37, a storage unit 38, and a communication unit 39.
  • the display unit 36 may be built in the device 300 or may be externally connected to the device 300.
  • the storage unit 38 stores programs such as a plurality of software modules, which will be described later, and various databases.
  • FIG. 4 is a diagram illustrating the configuration of software modules included in the messaging server 100, the notification server 200, and the device 300, respectively.
  • the messaging server 100 includes software modules of a connection processing unit 101, a connection management unit 102, a message processing unit 105, and a message transmission unit 106, databases of a notification means list 103 and a connection information list 104, Have
  • the connection processing unit 101 receives a connection request from the device 300 and establishes a connection with the device 300.
  • the connection management unit 102 manages all connections with the notification server 200 and the device 300, and processes, transmits, or forwards the received message.
  • the message processing unit 105 processes the received message addressed to the messaging server 100.
  • the message transmission unit 106 transmits a message to the device 300 that the messaging server 100 is in charge of.
  • the notification means list 103 is a list of information relating to notification means for notifying the device 300 of the presence of a message.
  • FIG. 5 shows an example of the notification means list.
  • each device 300 communicates with the messaging server 100 prior to actual communication.
  • the messaging server 100 receives a message addressed to each device, the device 300 is notified by any means. Register what you want.
  • each item of a node ID (device ID for a device, server ID for a server), notification means, and related information is described in the notification means list.
  • the node ID is, for example, a 128-bit ID that uniquely identifies the messaging server 100, the notification server 200, and each device 300.
  • the device ID is usually pre-embedded in the hardware of each device 300 such as the MAC address in WLAN / Ethernet (registered trademark), the IMEI of the mobile phone, etc. so that it becomes a unique ID for every device 300 Generated based on
  • the device ID may be assigned in any form as long as the uniqueness is guaranteed.
  • the server ID is an ID for uniquely specifying the messaging server 100 and the notification server 200 on the cloud. Usually, for the purpose of replacing the server at the time of troubleshooting, the ID specified at the start is used. Similar to the device ID, it may be set in any form.
  • the node ID represents, for example, the ID type in the upper bits and the ID unique to each node in the lower bits.
  • the ID type is, for example, “0300” for the device ID, “0400” for the server ID of the messaging server 100, “0401” for the server ID of the notification server 200, and the like.
  • the device ID is, for example, “03000000-0000-0000-0000-0000c293975d”
  • the server ID is, for example, “04010000-0000-0000-0000-000000000123”.
  • entries of a plurality of notification means relating to one device ID are shown, but actually, notification means for nodes having different IDs (the messaging server 100, the notification server 200, and the plurality of devices 300), respectively. Will be entered.
  • the notification server 200 is provided when the communication relay device 310 cannot perform direct communication from the outside (the messaging server 100). Therefore, when the communication relay device 310 does not exist or when a special setting is possible for the communication relay device 310, the messaging server 100 can execute the notification process without using the notification server 200.
  • Global IP indicates that a global IP address is allocated to the device 300 (for example, a mobile device), and the messaging server 100 can directly connect to the device 300 without going through the communication relay device 310.
  • the global IP address and port number of the node corresponding to the node ID are described as related information.
  • “UPnP IGD” can be set so that the communication relay device 310 forwards communication from the outside to a specific internal node in accordance with an instruction from the local node connected thereto. This indicates that connection to the device 300 is possible via the communication relay device 310.
  • the NAT router as the communication relay apparatus 310 supports the NAT-Traversal mechanism based on the UPnP-IGD protocol.
  • the internal device 300 determines the port number on the WAN 50 side and the port number on the LAN side in cooperation with the messaging server 100, and communicates with the port number on the WAN 50 side using the IP address on the LAN side. / Set to NAT router to forward to port number.
  • the messaging server 100 stores the IP address and port number on the WAN side as related information on the notification means list, and uses the stored IP address and port number when communicating with the device 300.
  • “User Setting” indicates that the same transfer setting as “UPnP IGD” is made possible by the user manually changing it using the port forwarding mechanism instead of an instruction from the device 300. Also in this case, the set IP address and port number are stored as related information.
  • Server indicates that the messaging server 100 can connect to each device 300 via the notification server 200.
  • the notification means is used.
  • the same device information may exist as a plurality of entries.
  • the device 300 is a mobile terminal such as a smartphone and is connected to a mobile phone network or a wireless LAN.
  • an expiration date may be provided for each entry in the list.
  • the connection information list 104 is a list in which information related to the connection that the messaging server 100 holds at that time. An example is shown in FIG. As shown in the figure, the connection information list 104 describes each item of the node ID, IP address, and socket number of the notification server 200 or the device 300 to which the messaging server 100 is connected. In the connection information list 104, a corresponding entry is added every time a connection with the notification server 200 or the device 300 is established, and when the connection is released, the corresponding entry is deleted.
  • the notification server 200 includes software modules of the connection processing unit 201 and the connection management unit 202, and a connection information list 203 as a database.
  • the connection processing unit 201 receives a connection request from the device 300 and establishes a connection.
  • the connection management unit 202 manages all connections with the messaging server 100 and the device 300, and when a notification request is received from the messaging server 100, transmits a notification message to the corresponding device 300.
  • connection information list 203 is a list in which information related to the connection held by the notification server 200 at that time is described, and the configuration is the same as the connection information list 104 included in the messaging server 100.
  • each device 300 includes software modules such as a notification unit setting unit 301, a notification server notification receiving unit 302, a direct notification receiving unit 303, a message receiving unit 304, a message transmitting unit 305, and a message processing unit 306.
  • software modules such as a notification unit setting unit 301, a notification server notification receiving unit 302, a direct notification receiving unit 303, a message receiving unit 304, a message transmitting unit 305, and a message processing unit 306.
  • the notification unit setting unit 301 sets a notification unit that can be used by the device 300 in the messaging server 100.
  • the notification server notification receiving unit 302 connects to the notification server 200 and receives a notification message.
  • the direct notification receiving unit 303 receives the notification message directly from the messaging server 100 without using the notification server 200.
  • the message receiving unit 304 is connected to the messaging server 100 and receives data (message) transmitted from the other device 300.
  • the message transmission unit 305 is connected to the messaging server 100 and transmits data (message) addressed to other devices.
  • the message processing unit 306 processes data (message) received from the messaging server 100.
  • the device 300A on the message transmission side is required to have at least the message transmission unit 305, other module blocks are indicated by broken lines in FIG. However, as a matter of course, the device 300A on the transmission side may have those modules similarly to the device 300B on the reception side. Similarly, in the figure, in the device 300B on the message receiving side, the message transmission unit 305 is indicated by a broken line, but the device 300B may also include the message transmission unit 305.
  • the messaging server 100 and the notification server 200 Prior to data (message) transmission processing, the messaging server 100 and the notification server 200 have, as initial setting information, a notification server ID, a messaging server ID, and a network address (host name or IP address / port number) corresponding to them. Is notified to each device 300 in advance.
  • FIG. 7 is a diagram schematically showing an outline of the flow of data transmission processing from the device 300A to the device 300B in this case.
  • the message receiving side (destination) device 300B confirms the communication environment with the cloud side and then connects to the notification server 200 via the communication relay device 310B ((1) in FIG. )). The connection is always maintained.
  • the device 300B connects to the messaging server 100 via the communication relay device 310B, and sets the notification server 200 as a notification unit (sends notification unit setting information) ((2) in the figure).
  • the message transmission source device 300A transmits a message addressed to the device 300B to the messaging server 100 ((3) in the figure).
  • the messaging server 100 that has received the message transmits a notification message transmission request (notification request) for notifying the presence of the message addressed to the device 300B from the device 300A to the notification server 200 ((4) in the figure). ).
  • the notification server 200 that has received the notification request transmits the notification message to the device 300B using the already established connection with the device 300B ((5) in the figure).
  • the device 300B that has received the notification message establishes a connection with the messaging server 100 via the communication relay device 310B, and receives the message from the device 300A ((6) in the figure).
  • FIG. 8 is a diagram schematically showing an outline of the flow of data transmission processing from the device 300A to the device 300B in this case.
  • the device 300B on the message receiving side confirms the communication environment with the cloud side ((1) in the figure).
  • the device 300B connects to the messaging server 100 and sets Global IP as a notification means ((2) in the figure).
  • the message transmission source device 300A transmits a message addressed to the device 300B to the messaging server 100 ((3) in the figure).
  • the messaging server 100 that has received the message establishes a connection with the device 300B, and transmits the notification message directly to the device 300B ((4) in the figure).
  • the device 300B that has received the notification message establishes a connection with the messaging server 100 and receives the message from the device 300A ((5) in the figure).
  • FIG. 9 is a diagram schematically showing an outline of the flow of data transmission processing from the device 300A to the device 300B in this case.
  • the device 300B on the message receiving side confirms the communication environment with the cloud side, and then uses the NAT Traversal mechanism by UPnP IGD to establish the communication relay device 310B (router).
  • the communication from the cloud side is set to be transferred to the device 300B ((1) in the figure).
  • the device 300B connects to the messaging server 100 via the communication relay device 310B, and sets UPnP IGD as a notification means ((2) in the figure).
  • the message transmission source device 300A transmits a message addressed to the device 300B to the messaging server 100 ((3) in the figure).
  • the messaging server 100 that has received the message establishes a connection with the device 300B based on the UPnP IGD setting, and transmits the notification message to the device 300B via the communication relay device 310B (FIG. 4)).
  • the device 300B that has received the notification message establishes a connection with the messaging server 100 based on the UPnP IGD setting, and receives the message from the device 300A via the communication relay device 310B (see FIG. (5)).
  • FIG. 10 is a diagram schematically showing an outline of the flow of data transmission processing from the device 300A to the device 300B in this case.
  • the user of the message receiving (destination) device 300B confirms the communication environment with the cloud side and then uses the port forwarding mechanism to communicate with the communication relay device 310B (router). Then, the communication is manually set to transfer the communication from the cloud side to the device 300B ((1) in the figure).
  • the device 300B connects to the messaging server 100 via the communication relay device 310B, and sets User Setting as a notification means ((2) in the figure).
  • the message transmission source device 300A transmits a message addressed to the device 300B to the messaging server 100 ((3) in the figure).
  • the messaging server 100 that has received the message establishes a connection with the device 300B based on the setting by the port forwarding mechanism, and transmits the notification message to the device 300B via the communication relay device 310B (see FIG. (4)).
  • the device 300B that has received the notification message establishes a connection with the messaging server 100 based on the setting by the port forwarding mechanism, and receives the message from the device 300A via the communication relay device 310B (same as above).
  • Figure (5) The device 300B that has received the notification message establishes a connection with the messaging server 100 based on the setting by the port forwarding mechanism, and receives the message from the device 300A via the communication relay device 310B (same as above).
  • FIG. 11 is a flowchart showing an operation flow of the message transmission unit 305 of the device 300A that is a message transmission source.
  • the message transmission unit 305 first determines the corresponding messaging server 100 from the node ID (device ID) of the device 300A (step 111). As described above, in this embodiment, there is only one messaging server 100, and each device 300 is informed of its server ID and network address in advance. 100 is specified.
  • the message transmission unit 305 establishes a connection with the messaging server 100 via the communication relay device 310A (step 112).
  • the message transmission unit 305 transmits a message addressed to the device 300B to the messaging server 100 (step 113).
  • the message transmission unit 305 releases the connection with the messaging server 100 (step 114).
  • FIG. 12 is a flowchart showing an operation flow of the notification means setting unit 301 of the device 300B that is the destination of data (message).
  • the notification means setting unit 301 first determines the corresponding messaging server 100 from the node ID (device ID) of the device 300B (step 121). As described above, in this embodiment, since the server ID and network address of the messaging server 100 are also known in advance in the device 300B, the notification unit setting unit 301 identifies the messaging server 100 based on the information.
  • the notification means setting unit 301 establishes a connection with the messaging server 100 via the communication relay device 310B (step 122).
  • the notification means setting unit 301 transmits notification means setting information specifying at least one of the four notification means described above to the messaging server 100 (step 123).
  • the notification unit setting unit 301 releases the connection with the messaging server 100 (step 124).
  • FIG. 13 is a flowchart showing an operation flow of the notification server notification receiving unit 302 of the device 300B. As described above, this operation is performed when the notification unit is set in the notification server 200.
  • the notification server notification receiving unit 302 first determines the corresponding notification server 200 from the node ID (device ID) of the device 300B (step 131). As described above, in the present embodiment, there is only one notification server 200, and each device 300 is informed of its server ID and network address in advance, so that the notification server notification reception unit 302 uses the information.
  • the notification server 200 is specified.
  • the notification server notification receiving unit 302 establishes a connection with the notification server 200 via the communication relay device 310B (step 132).
  • the notification server notification receiving unit 302 notifies the notification server 200 of the node ID (device ID) of the device 300B (step 133).
  • the notification server notification receiving unit 302 receives a notification message from the notification server 200 that has received the notification request from the messaging server 100 (step 134).
  • the notification server notification receiving unit 302 that has received the notification message determines whether or not the connection with the messaging server 100 is established at that time (step 135).
  • the notification server notification receiving unit 302 requests the message receiving unit 304 to connect to the messaging server 100 (step 136).
  • the notification server notification receiving unit 302 repeats the processes of steps 134 to 136 every time a notification message is received.
  • FIG. 14 is a flowchart showing an operation flow of the direct notification receiving unit 303 of the device 300B. As described above, this operation is performed when the notification unit is set to other than the notification server 200.
  • the direct notification receiving unit 303 first performs reception waiting processing of a notification message transmitted from the messaging server 100 (step 141).
  • the direct notification receiving unit 303 receives a notification message from the messaging server 100 (step 142).
  • the direct notification receiving unit 303 that has received the notification message determines whether or not the connection with the messaging server 100 has been established at that time (step 143).
  • the direct notification receiving unit 303 requests the message receiving unit 304 to connect to the messaging server 100 (step 144).
  • the direct notification receiving unit 303 repeats the processing of steps 142 to 144 every time a notification message is received.
  • FIG. 15 is a flowchart showing a flow of operations of the message receiving unit 304 and the message processing unit 306 of the device 300B.
  • the message receiving unit 304 first determines the corresponding messaging server 100 from the node ID (device ID) of the device 300B as described above (step 151).
  • the message receiving unit 304 establishes a connection with the messaging server 100 via the communication relay device 310B (directly without the communication relay device 310B if the notification means is Global IP) (step 152).
  • the message receiving unit 304 notifies the messaging server 100 of the node ID (device ID) of the device 300B (step 153).
  • the message receiving unit 304 waits for reception of a message from the messaging server 100, timeout, error, or communication disconnection (step 154).
  • Step 155 the message processing unit 306 processes the received message (Step 156).
  • the message receiving unit 304 releases the connection with the messaging server 100 (step 158).
  • the message receiving unit 304 and the message processing unit 306 repeat the processing in steps 154 to 158 every time a connection with the messaging server 100 is established.
  • FIG. 16 is a flowchart showing an operation flow of the connection processing unit 201 of the notification server 200.
  • connection processing unit 201 first waits for a connection request from the device 300 or the messaging server 100 (step 161).
  • connection processing unit 201 accepts the connection request and establishes a connection (step 163).
  • connection processing unit 201 receives the node ID (the device ID of the device 300 or the server ID of the messaging server 100) from the connection source device 300 or the messaging server 100 (step 164).
  • connection processing unit 201 records the node ID and connection information (IP address and socket number) in the connection information list 203 and newly adds them to the connection management target (step 165).
  • FIG. 17 is a flowchart showing an operation flow of the connection management unit 202 of the notification server 200.
  • connection management unit 202 first waits for reception of a message, error, or communication disconnection for all connections managed in the connection information list 203 (step 171).
  • connection management unit 202 determines whether or not a message has been received (step 172).
  • connection management unit 202 determines whether the message is a notification request from the messaging server 100 (step 173).
  • the connection management unit 202 acquires the device ID of the device 300 to be notified (the notification message transmission target) from the received message ( Step 174).
  • connection management unit 202 determines whether or not an entry that matches the acquired device ID exists in the connection information list 203 (step 175).
  • connection management unit 202 If it is determined that there is an entry that matches the acquired device ID (Yes in step 176), the connection management unit 202 notifies the target device 300 using the connection (IP address and socket number) corresponding to the entry. A message is transmitted (step 177).
  • connection management unit 202 determines whether an error has occurred or communication has been disconnected for any of the connections to be managed (step 178). ).
  • connection management unit 202 excludes from the connection information list 203 entries related to connections in which the error has occurred or communication has been disconnected (step 179).
  • FIG. 18 is a flowchart showing an operation flow of the connection processing unit 101 of the messaging server 100.
  • connection processing unit 101 first waits for a connection request from the device 300 (step 181).
  • connection processing unit 101 accepts the connection request from the device 300 and establishes a connection (step 183).
  • connection processing unit 101 receives the device ID from the connection source device 300 (step 184).
  • the connection processing unit 101 records the device ID and connection information (IP address and socket number) in the connection information list 104, and newly adds the device 300 to the connection management target (step 185).
  • FIG. 19 is a flowchart showing a flow of operations of the connection management unit 102 and the message processing unit 105 of the messaging server 100.
  • connection management unit 102 first waits for a message reception, error, or communication disconnection for all connections managed in the connection information list 104 (step 191).
  • connection management unit 102 determines whether or not a message has been received (step 192).
  • connection management unit 102 acquires the node ID set for the destination from the message (step 193).
  • connection management unit 102 determines whether or not the acquired node ID is the node ID (server ID) of the messaging server 100 (step 194).
  • the message processing unit 105 processes the message (step 195).
  • the connection management unit 102 determines the node ID of the corresponding messaging server from the node ID set as the destination. (Step 196).
  • the connection management unit 102 determines that the node ID of the server corresponding to the destination is the node ID of itself (the messaging server 100). (Yes in step 197).
  • connection manager 102 delivers the message to the message transmitter 106 (Step 198).
  • connection management unit 102 determines whether an error has occurred or communication has been disconnected for any of the connections to be managed (step 199). ).
  • connection management unit 102 excludes from the connection information list 104 entries relating to connections in which the error has occurred or communication has been disconnected (step 200).
  • FIG. 20 is a flowchart showing an operation flow of the message transmission unit 106 of the messaging server 100.
  • the message transmission unit 106 first acquires an entry that matches the node ID set as the destination from the notification means list 103 (step 201).
  • Step 202 If it is determined that the entry matching the node ID does not exist in the notification means list 103 (Yes in Step 202), the message transmission unit 106 ends the process.
  • the message transmission unit 106 determines whether or not the notification means for the entry is set to something other than the notification server 200 (Step 203). ).
  • the message transmitting unit 106 establishes a connection with the message destination device 300 (300B) based on the related information on the entry. (Step 204).
  • the message transmission unit 106 transmits the notification message to the device 300 using the connection (step 205).
  • the message transmission unit 106 releases the connection with the device 300 (step 206).
  • the message transmission unit 106 determines whether the notification server 200 corresponding to the node ID set in the transmission destination is used.
  • the node ID (server ID) is determined (step 207).
  • the message transmission unit 106 transmits a notification request to the device 300 set as the message destination to the notification server 200 having the note ID together with the node ID (device ID) (step 209).
  • the message transmission unit 106 releases the connection with the notification server 200 (step 210).
  • the message transmission unit 106 waits for a new connection or timeout from the message transmission destination device 300 (step 211).
  • the message transmission unit 106 sends a message to the device 300 using the connection corresponding to the node ID. Is transmitted (step 213).
  • the message transmission unit 106 discards the message (step 215).
  • the message transmission unit 106 acquires the next entry that matches the node ID of the destination from the notification means list 103 (step 216), and repeats the processing from step 202 onward.
  • the notification server 200 as a means for notifying the device 300 is provided, so that each device 300 has the communication relay device 310. Even if you do, you can always connect to the cloud side. Thereby, the load on the messaging server 100 is also reduced.
  • the advantage of connecting to the messaging server 100 only when necessary after always connecting to the notification server 200 compared to the case where all the devices 300 are always connected to the messaging server 100 is the latter.
  • the number of devices 300 that can be connected to one server can be greatly increased. For example, if the number of devices that can be supported by one messaging server 100 is 50,000, the number of devices that can be supported by one notification server 200 is one million.
  • the processing to be performed is complicated, and it is necessary to prepare a sufficient communication buffer size per connection from the viewpoint of communication efficiency.
  • the notification server 200 only needs to have a function of sending a very small message (notification message) to the device 300, the processing is very simple, and the communication buffer is also minimal. Just do it. Therefore, the resource required for one notification server 200 can be minimized.
  • the mechanism when it is possible to set the communication relay device 310 to transfer communication from the outside to a specific internal device 300, the mechanism is used so that the cloud side Is further reduced.
  • Means other than the notification server 200 such as UPnP IGD, may not be applied to communication between all the devices 300 alone. However, in a system based on the notification server 200, the load on the entire system is reduced. It functions effectively as a means.
  • FIG. 21 is a diagram showing a network configuration of the system according to the present embodiment.
  • only one messaging server 100 and one notification server 200 are provided on the cloud (WAN 50) side.
  • the present embodiment as shown in FIG. are provided in plural. As will be described later, with such a configuration, a message from the device 300 is relayed between the plurality of messaging servers 100.
  • messaging servers 100 and notification servers 200 Although a total of six messaging servers 100 and two notification servers 200 are shown in the figure, the number of messaging servers 100 and notification servers 200 is not limited to these.
  • FIG. 22 is a diagram illustrating the configuration of software modules included in the messaging server 100, the notification server 200, and the device 300, respectively.
  • the messaging server 100 includes a message transfer unit 107 in addition to the same modules as in the first embodiment (see FIG. 4).
  • the message transfer unit 107 transfers the message to the other messaging server 100 (100B) in order to send the message to the device 300 that the messaging server 100 (100A) does not handle itself.
  • the configuration of the modules included in the notification server 200 and the device 300 is the same as that described in the first embodiment.
  • the determination process described below is an example, and it can be executed by both the messaging server 100 and the device 300, and as long as it is guaranteed that the same result can be obtained by either execution, the correspondence relationship can be achieved by any method. It may be determined.
  • FIG. 23 is a flowchart showing a flow of server determination processing corresponding to the device 300. The following processing is described as being executed by the message transfer unit 107 of the messaging server 100, but may be executed by another module.
  • the message transfer unit 107 first divides the values from 0 to 0xfffffff for each of the messaging server 100 and the notification server 200 according to the number of servers actually used, and creates a server allocation table. It is created (step 271). For example, the table is stored in the storage unit 18.
  • FIG. 24 is a diagram illustrating an example of a server allocation table for the messaging server 100
  • FIG. 25 is a diagram illustrating an example of a server allocation table for the notification server 200.
  • the values from 0 to 0xffffffff are divided into predetermined ranges, and the server IDs of the messaging server 100 and the notification server 200 are assigned to the ranges of the values, respectively.
  • the message transfer unit 107 receives the node ID from the server allocation target device 300 (step 272).
  • the message transfer unit 107 calculates a hash value by SHA256-HASH by combining the received node ID and predetermined padding data (step 273).
  • the message transfer unit 107 extracts the lower 32 bits from the obtained hash value (step 274).
  • the message transfer unit 107 searches the lower 32 bits taken out from the server assignment table, and determines the corresponding server ID by referring to the server ID assigned thereto (step 275).
  • the device ID is determined based on information embedded in the hardware of each device 300 (such as the MAC address of the wireless LAN and the IMEI of the mobile phone). Therefore, after purchasing the device 300, the user can connect to the messaging server 100 and the notification server 200 corresponding to the device 300 without any setting, and can communicate with any other device 300 via them. Enjoy the environment.
  • the following description is also an example of the network address determination process, and it can be executed by both the messaging server 100 and the device 300 as long as it is guaranteed that the same result can be obtained by either execution. May be implemented in any way.
  • IP address and port number In order to determine the network address (IP address and port number), (1) an example using DNS (Domain Name System) and (2) an example using a resolution table will be described.
  • DNS Domain Name System
  • resolution table An example using a resolution table
  • the message transfer unit 107 of the messaging server 100 generates a host name from the server number of another messaging server 100 that is a target for determining a network address. Then, the message transfer unit 107 acquires an IP address using the DNS mechanism on the TCP / IP network based on the host name.
  • the host name of the messaging server 100 is generated as “ms15.server.com”
  • the host name of the notification server is generated as “ns1.server.com”.
  • the acquired IP address and port number are distributed to the device 300, the other messaging server 100, and the notification server 200.
  • the message transfer unit 107 creates a resolution table that defines the IP address and port number corresponding to the server number for each of the messaging server 100 and the notification server 200. These resolution tables are distributed to the device 300, the other messaging server 100, and the notification server 200.
  • FIG. 26 is a diagram illustrating an example of a resolution table for the messaging server 100
  • FIG. 27 is a diagram illustrating an example of a resolution table for the notification server 200.
  • FIG. 28 is a diagram schematically showing an outline of the flow of data transmission processing between the devices 300.
  • the message sending device 300A sends a message addressed to the device 300B to the messaging server 100A ((1) in the figure).
  • the messaging server 100A that has received the message determines that it is a message to be supported by the other messaging server 100B
  • the messaging server 100A transfers the message to the messaging server 100B ((2) in the figure).
  • the messaging server 100B to which the message has been transferred transmits a notification request for requesting the notification server 200B corresponding thereto to notify the presence of the message addressed to the device 300B from the device 300A.
  • the notification server 200B Upon receiving the notification request, the notification server 200B transmits a notification message to the corresponding device 300B ((3) in the figure).
  • the device 300B that has received the notification message establishes a connection with the corresponding messaging server 100B and receives the message from the device 300A ((4) in the figure).
  • FIG. 29 is a flowchart showing an operation flow of the connection processing unit 101 of the messaging server 100A.
  • connection processing unit 101 first waits for a connection request from the device 300 or another messaging server 100B (step 291).
  • connection processing unit 101 When there is a connection request from the device 300 or another messaging server 100B (Yes in Step 292), the connection processing unit 101 accepts the connection request and establishes a connection (Step 293).
  • connection processing unit 101 receives the node ID (device ID, server ID) from the connection source device 300 or another messaging server 100B (step 294).
  • connection processing unit 101 records the node ID and connection information (IP address and socket number) in the connection information list 104, and newly adds the device 300 or another messaging server 100B to the connection management target (step) 295).
  • FIG. 30 is a flowchart showing the operation flow of the connection management unit 102 of the messaging server 100A.
  • connection management unit 102 first waits for a message reception, error, or communication disconnection for all connections managed in the connection information list 104 (step 301).
  • connection management unit 102 determines whether or not a message has been received (step 302).
  • connection management unit 102 acquires the node ID set for the destination from the message (step 303).
  • connection management unit 102 determines whether or not the acquired node ID is the node ID (server ID) of the messaging server 100A (step 304).
  • the message processing unit 105 processes the message (step 305).
  • the connection management unit 102 refers to the server allocation table and determines from the node ID set as the destination to The node ID of the corresponding messaging server is determined (step 306).
  • connection management unit 102 determines whether or not the node ID of the messaging server corresponding to the user ID is the node ID of the messaging server 100A (step 307).
  • connection management unit 102 delivers the message to the message transmission unit 106 (step 308).
  • the connection management unit 102 delivers the message to the message transfer unit 107 (step 309).
  • connection management unit 102 determines whether an error has occurred or communication has been disconnected for any of the connections to be managed (step 310). ).
  • connection management unit 102 excludes an entry relating to a connection in which the error has occurred or communication has been disconnected from the connection information list 104 (step 311).
  • FIG. 31 is a flowchart showing the operation flow of the message transfer unit 107 of the messaging server 100A.
  • the message transfer unit 107 determines whether there is a connection corresponding to the node ID of the other messaging server 100B based on the connection information list 104 (whether it is already connected to the other messaging server 100B). It is confirmed whether or not (step 311).
  • Step 313 If it is determined that a corresponding connection exists (Yes in Step 312), the message transfer unit 107 transfers the message to the other connected messaging server 100B (Step 313).
  • Step 312 when it is determined that there is no corresponding connection (No in Step 312), the message transfer unit 107 establishes a connection with the other messaging server 100B (Step 314).
  • the message transfer unit 107 adds the entry to the connection information list 104 (step 315), and then repeats the processing from step 311 onward.
  • a plurality of messaging servers 100 and notification servers 200 are provided, and a message is transferred between the messaging servers 100 to support communication between a very large number of devices 300.
  • FIG. 32 is a diagram showing a network configuration of the system according to the present embodiment.
  • each device 300 is owned by a different user.
  • a plurality of devices 300 may naturally be owned by a plurality of users.
  • communication between devices 300 owned by the same user is increased compared to other devices. Therefore, in this embodiment, the concept of “owner” of each device 300 is introduced, and for the device 300 in which a user ID for identifying the owner is set, the messaging server 100 and the notification server 200 corresponding to the user ID are set from the user ID. We are going to decide.
  • a plurality of messaging servers 100 and notification servers 200 exist on the cloud, as in the second embodiment.
  • the same user is set as the owner of the device 300B and the device 300C.
  • the messaging server 100B and the notification server 200B are set as the corresponding servers.
  • the messaging server 100C and the notification server 200C are set in the corresponding servers based on the server allocation table described in the second embodiment, and have the same user ID as the device 300B. Therefore, the messaging server 100B and the notification server 200B are also set as the corresponding servers.
  • the messaging server 100 has initial data. Then, a messaging server allocation table and a notification server allocation table (hereinafter referred to as a user ID server allocation table) based on the user ID are created. These tables are distributed in advance to each device 300 and each messaging server 100 and notification server 200.
  • the method for creating the user ID server allocation table is the same as that described in the second embodiment except that the device ID is replaced by the user ID.
  • the device ID server allocation table and the user ID server allocation table may be created on the device 300 side.
  • each server group assigned based on the device ID and each server group assigned based on the user ID are prepared separately.
  • Each device 300 also has means for recording a user ID (owner ID). In the initial state of each device 300, NULL is set.
  • the device 300 in which the user ID is not set is connected to the messaging server 100 and the notification server 200 determined by the device ID as in the second embodiment.
  • the device 300 for which the user ID has been set can be connected to all of the messaging server 100 and the notification server 200 determined by the device ID and the user ID, respectively.
  • the message sending device 300 connects to the messaging server 100 which is usually determined by its user ID. If the user ID is set as the message destination, the message receiving device 300 connects to the corresponding messaging server 100, and otherwise connects to the messaging server 100 corresponding to the device ID.
  • the device 300 sets both as the message destination and transmits the message.
  • each device 300 when each device 300 knows only the device ID of the device 300 to which the message is sent, the device 300 sets the device ID as a message destination and transmits the message.
  • FIG. 33 is a flowchart showing the flow of the operation.
  • the following description shows the operation of the messaging server 100A that first receives a message from the device 300.
  • another messaging server 100 is referred to as a messaging server 100B for convenience of explanation.
  • connection management unit 102 of the messaging server 100A first waits for reception of a message, error, or communication disconnection for all connections managed in the connection information list 104 (step 331). .
  • connection management unit 102 determines whether or not a message has been received (step 332).
  • connection management unit 102 acquires the user ID and node ID set for the destination from the message (step 333).
  • connection management unit 102 determines whether or not the acquired node ID is the node ID (server ID) of the messaging server 100A (step 334).
  • the message processing unit 105 processes the message (step 335).
  • the connection management unit 102 determines whether both the user ID and the node ID exist as the destination (step) 336).
  • connection management unit 102 refers to the user ID server allocation table, determines the user ID set in the delivery destination, The node ID of the corresponding messaging server is determined (step 337).
  • connection management unit 102 determines whether or not the node ID of the messaging server corresponding to the user ID is the node ID of the messaging server 100A (step 338).
  • connection management unit 102 delivers the message to the message transmission unit 106 (step 339).
  • the connection management unit 102 delivers the message to the message transfer unit 107 (step 340).
  • connection management unit 102 refers to the device ID server allocation table.
  • the node ID of the messaging server corresponding to the node ID (device ID) set as the destination is determined (step 341).
  • connection management unit 102 determines whether or not the node ID of the messaging server corresponding to the node ID is the node ID of the messaging server 100A (step 342).
  • connection management unit 102 delivers the message to the message transmission unit 106 (step 343).
  • the connection management unit 102 delivers the message to the message transfer unit 107 (step 344).
  • connection management unit 102 determines whether an error has occurred or communication has been disconnected for any connection to be managed (step 346). ).
  • connection management unit 102 excludes an entry relating to a connection in which the error has occurred or communication has been disconnected from the connection information list 104 (step 347).
  • devices 300 set with the same user ID connect to the same messaging server 100 and notification server 200 as long as the user ID is set as the message destination. Will do. Therefore, communication between the messaging servers 100 is reduced, and the load on the cloud side is reduced.
  • the communication from the messaging server 100 to the notification server 200 is established / removed for each communication, but the connection may be maintained for a certain period of time.
  • the messaging server 100 tries a plurality of notification means in order when they are available. However, in order to improve the response, the messaging server 100 may try according to the priority order when a plurality of communication means are available, or may notify in parallel by a plurality of notification means.
  • the notification unit setting unit 301 is provided in each device 300 in order to set the notification unit. However, when each device 300 uses only a specific notification unit, the notification unit setting unit 301 is omitted. May be.
  • each device 300 is provided with the notification server notification receiving unit 302 and the direct notification receiving unit 303 depending on whether the notification server 200 is used, but only one of them is provided. It may operate or may be operable at the same time.
  • the connection used by the message receiving unit 304 of each device 300 is held for a certain period of time once established. However, the message receiving unit 304 may connect to the server every time if necessary. . In each of the above-described embodiments, the connection used by the message transmission unit 305 of each device 300 is established / removed every time. However, once the connection is established, it may be held for a certain period of time.
  • each device 300 the message reception unit 304 and the message transmission unit 305 of each device 300 are shown as separate modules, but the connections used by both may be shared.
  • each device 300 maintains a connection with the notification server 200 even during a period in which the device 300 is connected to the messaging server 100. However, each device 300 may once disconnect from the notification server 200 and connect to the notification server 200 again when the connection with the messaging server 100 is released.
  • messages are used for all exchanges between the devices 300 via the messaging server 100.
  • an application of each device 300 may be provided with an RPC (Remote Procedure Call) mechanism, a stream communication mechanism, and a communication mechanism such as HTTP emulation based on this message mechanism.
  • RPC Remote Procedure Call
  • the messaging server 100 and the notification server 200 are shown as physically different servers. However, since the difference between the two results from the setting and handling of the buffer size for the connection with each device 300, the same effect can be obtained in the following forms even if the form is not operated on a physically different server. Is obtained. (1) Run both the notification server process and the messaging server process on a single server machine. (2) One server process having a notification server function and a messaging server function is operated on a single server machine (a connection form corresponding to the notification server and a messaging server corresponding to the communication status with the device 300) Switch the connection type).
  • a communication unit that can communicate with the first device, the second device, and the always-on server that is always connected to the second device via the network by connecting as needed via the network.
  • Notification request information for requesting to receive data addressed to the second device from the first device and transmitting a notification message notifying the presence of the data to the second device is sent to the always-on server.
  • An information processing apparatus comprising: a control unit capable of controlling the communication unit to transmit the data to the second device in response to a request from the second device that has transmitted and received the notification message .
  • the control unit sends the notification message instead of transmitting the notification request information or in addition to transmitting the notification request information.
  • An information processing apparatus that controls the communication unit to transmit directly to a second device.
  • the information processing apparatus according to any one of [1] to [3] above, There are a plurality of the information processing devices and the always-on servers, The first device, the second device, the plurality of information processing devices, the first device, the second device, the plurality of information processing devices, and the first device, the second device, the plurality of information processing devices, It is associated using device identification information that uniquely identifies multiple always-on servers, When the control unit determines that the second device is associated with another information processing device based on the device identification information, the control unit transfers the data to the other information processing device.
  • An information processing apparatus for controlling the communication unit is a plurality of information processing devices and the always-on servers.
  • the information processing apparatus according to [4] above, A storage unit;
  • the controller is Correspondence relationship between a value based on a hash value obtained from a predetermined hash function based on device identification information of each of the first device and the second device, and identification information of each of the plurality of information processing devices Create a table that defines Controlling the storage unit to store the created table;
  • An information processing apparatus that determines another information processing apparatus corresponding to the second device based on the stored table.
  • the control unit replaces the device identification information with the user identification information.
  • An information processing apparatus that creates the table using a computer.

Abstract

【課題】クラウド側のシステムの負荷を軽減し、膨大な数のデバイスを扱うこと。 【解決手段】情報処理装置は、通信部と制御部とを有する。上記通信部は、第1の機器、第2の機器、並びに上記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、上記ネットワークを介して必要に応じて接続して通信可能である。上記制御部は、上記第1の機器から、上記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを上記第2の機器へ送信するように要求する通知要求情報を上記常時接続サーバへ送信し、上記通知メッセージを受信した第2の機器からの要求に応じて、上記データを当該第2の機器へ送信するように、上記通信部を制御可能である。

Description

情報処理装置、情報処理方法及びプログラム
 本技術は、ネットワークを介して複数のデバイスと通信可能な情報処理装置に関する。
 従来から、NAT(Network Address Translation)ルータやプロキシサーバ/ファイアーウォールのために直接は通信できないデバイス間で、自由な通信を行わせるための技術として、XMPP(Extensible Messaging and Presence Protocol)と呼ばれるメッセージングプロトコルがある。すなわち、当該XMPPを用いたサーバがクラウド上に配置され、デバイス間の全ての通信をこのサーバが仲介することで、各デバイスはNATルータやプロキシサーバ/ファイアーウォールの影響を受けずに互いに通信を行うことが可能となる。XMPPに関連した文献としては、例えば以下の特許文献1がある。
特開2007-318185号公報
 しかしながら、上記XMPPを用いた手法では、XML(Extensible Markup Language)をベースとしたプロトコルが用いられるため、サーバは、全てのクライアントと常時接続した上でXMLのパース等の複雑な処理を行う必要がある。したがってこの手法では、1台のサーバで扱うことのできるクライアントの数が十分でない。
 以上のような事情に鑑み、本技術の目的は、クラウド側のシステムの負荷を軽減し、1台で膨大な数のデバイスを扱うことが可能な情報処理装置、情報処理方法及びプログラムを提供することにある。
 上述の課題を解決するため、本技術の一形態に係る情報処理装置は、通信部と制御部とを有する。上記通信部は、第1の機器、第2の機器、並びに上記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、上記ネットワークを介して必要に応じて接続して通信可能である。上記制御部は、上記第1の機器から、上記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを上記第2の機器へ送信するように要求する通知要求情報を上記常時接続サーバへ送信し、上記通知メッセージを受信した第2の機器からの要求に応じて、上記データを当該第2の機器へ送信するように、上記通信部を制御可能である。
 本技術では、情報処理装置は、第1の機器から第2の機器宛のデータを受信した場合には、常時接続サーバを介して第2の機器へ通知メッセージを送信し、第2の機器からのアクセスに応じてデータを送信できる。したがって情報処理装置は、常時接続サーバに、第1の機器及び第2の機器との接続の維持及びデータの存在の通知を代行させることで、自身の負荷を軽減することができる。また常時接続サーバは、複雑な処理を必要とせず、通信バッファも最小限で済むため、極めて多数の第1の機器及び第2の機器と接続することが可能となる。この結果、1台の情報処理装置が間接的に扱うことができる機器の数が大幅に増加する。
 ここで上記データには、例えば動画、静止画、音声、テキスト、メッセージ、プログラム等、あらゆるデータが含まれる。また上記情報処理装置は、典型的にはサーバ装置であるが、それに限られるものではなく、他のあらゆる機器であり得る。
 当該情報処理装置は記憶部をさらに有してもよい。また上記第2の機器は、通信中継装置を介して当該情報処理装置及び上記常時接続サーバと通信してもよい。この場合上記制御部は、上記通信中継装置が、当該情報処理装置からの通信を第2の機器へ転送するように設定されている場合には、当該転送設定に関する情報を記憶するように上記記憶部を制御してもよい。また制御部は、上記記憶された情報を用いて、上記通知要求情報の送信に代えて、または、上記通知要求情報の送信に加えて、上記通知メッセージを上記第2の機器へ直接送信するように上記通信部を制御してもよい。
 これにより情報処理装置は、第2の機器側の通信中継装置(ルータ)がUPnP IGD(Universal Plug and Play Internet Gateway Device)プロトコルによるNAT Traversal機構をサポートしている場合には、いわゆるNAT超えにより、第2の機器へ直接通知メッセージを送信することもできる。
 上記制御部は、上記第2の機器にグローバルIPアドレスが割り当てられている場合には、上記通知要求情報の送信に代えて、または、上記通知要求情報の送信に加えて、上記通知メッセージを上記第2の機器へ直接送信するように上記通信部を制御してもよい。
 これにより情報処理装置は、第2の機器が通信中継装置を介さずにアクセス可能な場合には、第2の機器へ直接通知メッセージを送信することもできる。
 当該情報処理装置及び上記常時接続サーバはそれぞれ複数存在してもよい。この場合上記第1の機器及び上記第2の機器は、それぞれ1つの上記情報処理装置及び上記常時接続サーバと通信するよう、当該第1の機器、上記第2の機器、上記複数の情報処理装置、上記複数の常時接続サーバをそれぞれ一意に識別する機器識別情報を用いて対応付けられていてもよい。この場合上記制御部は、上記機器識別情報を基に、上記第2の機器が他の情報処理装置と対応付けられていると判断した場合には、上記データを当該他の情報処理装置へ転送するように上記通信部を制御してもよい。
 これにより、情報処理装置及び常時接続サーバが複数存在することで、より膨大な数の機器の通信がサポートされる。
 上記情報処理装置は、記憶部をさらに有してもよい。この場合上記制御部は、上記第1の機器及び上記第2の機器のそれぞれの機器識別情報を基に所定のハッシュ関数から得られるハッシュ値に基づいた値と、当該複数の情報処理装置のそれぞれの識別情報との対応関係を定めたテーブルを作成してもよい。また制御部は、上記作成されたテーブルを記憶するように上記記憶部を制御してもよく、上記記憶されたテーブルを基に、上記第2の機器に対応する他の情報処理装置を決定してもよい。
 これにより情報処理装置は、上記テーブルを用いることで、第2の機器に対応する他の情報処理装置を容易に決定することができる。
 上記制御部は、上記第1の機器及び上記第2の機器にそれぞれを所有するユーザを一意に識別するユーザ識別情報が設定されている場合には、上記機器識別情報に代えて上記ユーザ識別情報を用いて上記テーブルを作成してもよい。
 これにより、機器の識別情報が異なっていても、同一のユーザによって所有される機器は同一の情報処理装置に接続されることになるため、複数の情報処理装置間の通信が削減され、クラウド側の負荷が低減する。
 本技術の他の形態に係る情報処理装置は、通信部と制御部とを有する。上記通信部は、第1の機器及び第2の機器とネットワークを介して常時接続して通信可能である。また通信部は、上記第1の機器と上記第2の機器との間のデータの送受信を上記ネットワーク上で仲介する仲介サーバと必要に応じて接続して通信可能である。上記制御部は、上記第1の機器から送信された上記第2の機器宛のデータが上記仲介サーバにより受信された場合に、当該仲介サーバから、当該データの存在を通知する通知メッセージを上記第2の機器へ送信するように要求する通知要求情報を受信し、当該通知要求情報に基づいて、上記通知メッセージを上記第2の機器へ送信するように、上記通信部を制御可能である。
 これにより情報処理装置は、1台の仲介サーバが間接的に扱うことができる機器の数を大幅に増加させ、仲介サーバの負荷を軽減することができる。
 本技術の他の形態に係る情報処理装置は、通信部と制御部とを有する。上記通信部は、ネットワーク上の第1のサーバと必要に応じて接続して通信可能であり、上記ネットワーク上の第2のサーバと常時接続して通信可能である。上記制御部は、他の情報処理装置から送信されたデータの存在を通知する通知メッセージを上記第2のサーバから受信し、当該受信された通知メッセージを基に、上記データを上記第1のサーバから受信するように上記通信部を制御可能である。
 本技術の他の形態に係る情報処理方法は、第1の機器とネットワークを介して接続を確立して当該第1の機器から第2の機器宛のデータを受信することを含む。当該方法では、上記データの存在を通知する通知メッセージを当該第2の機器へ送信するように要求する通知要求情報が、上記第2の機器と常時接続されたサーバへ送信される。そして、上記通知メッセージを受信した上記第2の機器からの要求に応じて接続が確立されて当該第2の機器へ上記データが送信される。
 本技術のまた別の形態に係るプログラムは、情報処理装置に、受信ステップと、第1の送信ステップと、第2の送信ステップとを実行させる。上記受信ステップでは、第1の機器とネットワークを介して接続が確立されて当該第1の機器から第2の機器宛のデータが受信される。上記第1の送信ステップでは、上記データの存在を通知する通知メッセージを当該第2の機器へ送信するように要求する通知要求情報が、上記第2の機器と常時接続された常時接続サーバへ送信される。上記第2の送信ステップでは、上記通知メッセージを受信した上記第2の機器からの要求に応じて当該第2の機器と接続が確立されて当該第2の機器へ上記データが送信される。
 以上のように、本技術によれば、クラウド側のシステムの負荷を軽減し、1台で膨大な数のデバイスを扱うことができる。
本技術の第1の実施形態におけるシステムのネットワーク構成を示した図である。 上記システムにおけるメッセージングサーバのハードウェア構成を示したブロック図である。 上記システムにおけるデバイスのハードウェア構成を示したブロック図である。 上記システムにおける各ノードのソフトウェアモジュール構成を示したブロック図である。 上記メッセージングサーバが有する通知手段リストの例を示した図である。 上記メッセージングサーバが有する接続情報リストの例を示した図である。 通知手段が通知サーバである場合の、デバイス間のデータ送信処理の流れを模式的に示した図である。 通知手段がGlobal IPである場合の、デバイス間のデータ送信処理の流れを模式的に示した図である。 通知手段がUPnP IGDである場合の、デバイス間のデータ送信処理の流れを模式的に示した図である。 通知手段がUser Settingである場合の、デバイス間のデータ送信処理の流れを模式的に示した図である。 データの送信元であるデバイスのメッセージ送信部の動作の流れを示したフローチャートである。 データの宛先となるデバイスの通知手段設定部の動作の流れを示したフローチャートである。 データの宛先となるデバイスの通知サーバ通知受信部の動作の流れを示したフローチャートである。 データの宛先となるデバイスの直接通知受信部の動作の流れを示したフローチャートである。 データの宛先となるデバイスのメッセージ受信部の動作の流れを示したフローチャートである。 通知サーバの接続処理部の動作の流れを示したフローチャートである。 通知サーバの接続管理部の動作の流れを示したフローチャートである。 メッセージングサーバの接続処理部の動作の流れを示したフローチャートである。 メッセージングサーバの接続管理部の動作の流れを示したフローチャートである。 メッセージングサーバのメッセージ送信部の動作の流れを示したフローチャートである。 本技術の第2の実施形態におけるシステムのネットワーク構成を示した図である。 本技術の第2の実施形態における上記システムにおける各ノードのソフトウェアモジュール構成を示した図である。 本技術の第2の実施形態における、デバイスに対応するサーバの決定処理の流れを示したフローチャートである。 本技術の第2の実施形態において作成されるメッセージングサーバ割り当てテーブルの例を示した図である。 本技術の第2の実施形態において作成される通知サーバ割り当てテーブルの例を示した図である。 本技術の第2の実施形態において作成される、メッセージングサーバのネットワークアドレス決定用のレゾリューションテーブルの例を示した図である。 本技術の第2の実施形態において作成される、通知サーバのネットワークアドレス決定用のレゾリューションテーブルの例を示した図である。 本技術の第2の実施形態におけるデバイス間のデータ送信処理の流れを模式的に示した図である。 本技術の第2の実施形態におけるメッセージングサーバの接続処理部の動作の流れを示したフローチャートである。 本技術の第2の実施形態におけるメッセージングサーバの接続管理部の動作の流れを示したフローチャートである。 本技術の第2の実施形態におけるメッセージングサーバのメッセージ転送部の動作の流れを示したフローチャートである。 本技術の第3の実施形態におけるシステムのネットワーク構成を示した図である。 本技術の第3の実施形態におけるメッセージングサーバの接続管理部の動作の流れを示したフローチャートである。
 以下、本技術に係る実施形態を、図面を参照しながら説明する。
<第1の実施形態>
 まず、本技術の第1の実施形態を説明する。
[システムのネットワーク構成]
 図1は、本実施形態に係るシステムのネットワーク構成を示した図である。
 同図に示すように、このシステムは、クラウド上のメッセージングサーバ100及び通知サーバ200と、それらサーバとWAN(Wide Area Network)を介して接続可能な複数のデバイス300とを有する。
 本実施形態では、メッセージングサーバ100及び通知サーバ200はクラウド上にそれぞれ1台ずつ設けられる。
 デバイス300は、例えばスマートフォン、携帯電話機、タブレットPC(Personal Computer)、デスクトップPC、ノートブックPC、PDA(Personal Digital Assistant)、携帯型AVプレイヤー、電子ブック、デジタルスチルカメラ、カムコーダ、テレビジョン装置、PVR(Personal Video Recorder)、ゲーム機器、カーナビゲーションシステム、デジタルフォトフレーム等、あらゆる情報処理装置であり得る。同図では、デバイス300Aとデバイス300Bの2台のみが示されているが、デバイス300の数は3台以上であっても構わない。
 各デバイス300は、通信中継装置310を介して上記メッセージングサーバ100及び通知サーバ200と通信する場合もあるし、通信中継装置310を介さずに直接それらのサーバと通信する場合もある。
 各デバイス300は、通知サーバ200とは常時接続により通信可能である一方、メッセージングサーバ100とは必要に応じて接続を確立して通信する。メッセージングサーバ100は、通知サーバ200及び各デバイス300と、必要に応じて接続を確立して通信する。
 通信中継装置310とは、内側(デバイス300側)のネットワークと外部(クラウド側)のネットワークとの間の通信を中継する機能を持ち、両ネットワークにおいて利用されるアドレスの相違や、セキュリティを保護する機構のために、外部のサーバが、特別な手段を用いない限り、内部の特定のデバイスを指定して接続することを不可能にしているものをいう。このような通信中継装置310としては、例えばNATルータやプロキシサーバまたはファイアーウォールが挙げられる。
 詳細は後述するが、メッセージングサーバ100は、デバイス300間の通信(例えばメッセージの送受信)を仲介するサーバとして機能する。また通知サーバ200は、あるデバイス300から送信されたデータ(メッセージ)が存在する旨の通知メッセージを、当該データの宛先のデバイス300へ送信するための通知手段の1つとして機能する。他の通知手段については後述する。
 以降の説明では、メッセージングサーバ100、通知サーバ200及びデバイス300をまとめて「ノード」と称する場合もある。
[メッセージングサーバのハードウェア構成]
 図2は、上記メッセージングサーバ100のハードウェア構成を示した図である。同図に示すように、メッセージングサーバ100は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、入出力インタフェース15、及び、これらを互いに接続するバス14を備える。
 CPU11は、必要に応じてRAM13等に適宜アクセスし、各種演算処理を行いながらメッセージングサーバ100の各ブロック全体を統括的に制御する。ROM12は、CPU11に実行させるOS、プログラムや各種パラメータなどのファームウェアが固定的に記憶されている不揮発性のメモリである。RAM13は、CPU11の作業用領域等として用いられ、OS、実行中の各種アプリケーション、処理中の各種データを一時的に保持する。
 入出力インタフェース15には、表示部16、操作受付部17、記憶部18、通信部19等が接続される。
 表示部16は、例えばLCD(Liquid Crystal Display)、OELD(Organic ElectroLuminescence Display)、CRT(Cathode Ray Tube)等を用いた表示デバイスである。
 操作受付部17は、例えばマウス等のポインティングデバイス、キーボード、タッチパネル、その他の入力装置である。操作受付部17がタッチパネルである場合、そのタッチパネルは表示部16と一体となり得る。
 記憶部18は、例えばHDD(Hard Disk Drive)や、フラッシュメモリ(SSD;Solid State Drive)、その他の固体メモリ等の不揮発性メモリである。当該記憶部18には、上記OSや各種アプリケーション、各種データが記憶される。特に本実施形態において、記憶部18には、後述する複数のソフトウェアモジュール等のプログラムや、通知手段リスト、接続情報リスト等のデータベースが記憶される。
 通信部19は、WAN50に接続するためのNIC等であり、通知サーバ200やデバイス300との間の通信処理を担う。
[通知サーバのハードウェア構成]
 上記通知サーバ200のハードウェア構成も、上記メッセージングサーバのハードウェア構成と同様であるため、説明を省略する。本実施形態では、通知サーバ200において、上記メッセージングサーバ100のCPU11、記憶部18、通信部19と対応するハードウェアをそれぞれCPU21、記憶部28、通信部29と称する。
 記憶部28には、後述する複数のソフトウェアモジュール等のプログラムや、接続情報リスト等のデータベースが記憶される。
[デバイスのハードウェア構成]
 図3は、上記デバイス300のハードウェア構成を示した図である。同図に示すように、デバイス300のハードウェア構成も、上記サーバ100のハードウェア構成と基本的に同様である。すなわち、デバイス300は、CPU31、ROM32、RAM33、入出力インタフェース35、及び、これらを互いに接続するバス34、表示部36、操作受付部37、記憶部38、通信部39を備える。
 ここで表示部36は、デバイス300に内蔵されていてもよいし、デバイス300に外部接続されていてもよい。
 記憶部38には、後述する複数のソフトウェアモジュール等のプログラムや、各種データベースが記憶される。
[各機器のモジュール構成]
 図4は、上記メッセージングサーバ100、通知サーバ200及びデバイス300がそれぞれ有するソフトウェアモジュールの構成を示した図である。
(メッセージングサーバのモジュール構成)
 同図に示すように、メッセージングサーバ100は、接続処理部101、接続管理部102、メッセージ処理部105及びメッセージ送信部106の各ソフトウェアモジュールと、通知手段リスト103及び接続情報リスト104の各データベースとを有する。
 接続処理部101は、デバイス300からの接続要求を受け、デバイス300と接続を確立する。
 接続管理部102は、通知サーバ200及びデバイス300との全ての接続を管理し、受け取ったメッセージを処理、送信、または転送する。
 メッセージ処理部105は、受信したメッセージングサーバ100宛のメッセージを処理する。
 メッセージ送信部106は、メッセージングサーバ100が担当するデバイス300へメッセージを送信する。
 通知手段リスト103は、デバイス300へメッセージの存在を通知する通知手段に関する情報のリストである。図5に、当該通知手段リストの例を示す。
 後述するが、各デバイス300は、実際の通信に先立ち、メッセージングサーバ100と通信を行って、メッセージングサーバ100が各デバイス宛のメッセージを受け取った場合に、どのような手段を用いて通知してもらいたいかを登録しておく。
 同図に示すように、通知手段リストには、ノードID(デバイスであればデバイスID、サーバであればサーバID)、通知手段及び関連情報の各項目が記載される。
 ノードIDは、メッセージングサーバ100、通知サーバ200及び各デバイス300を一意に識別する例えば128ビットのIDである。
 デバイスIDは、全てのデバイス300毎にユニークなIDとなるように、通常はWLAN/Ethernet(登録商標)におけるMACアドレスや、携帯電話のIMEIなど、各デバイス300のハードウェアに予め埋め込まれた情報を元に生成される。しかし、当該デバイスIDは、一意性が保証されるのであれば、どのような形で割り当てられてもよい。
 サーバIDは、クラウド上のメッセージングサーバ100及び通知サーバ200を一意に指定するためのIDで、通常は、障害対策時にサーバを置き換えるなどの目的から、起動時に指定したIDなどが用いられるが、上記デバイスIDと同様にどのような形で設定されてもよい。
 当該ノードIDは、例えば、上位ビットでIDのタイプ、下位ビットで各ノード固有のIDを表す。IDのタイプとは、例えばデバイスIDであれば「0300」、メッセージングサーバ100のサーバIDであれば「0400」、通知サーバ200のサーバIDであれば「0401」等である。
 具体的には、デバイスIDは例えば「03000000-0000-0000-0000-0000c293975d」といったものであり、サーバIDは例えば「04010000-0000-0000-0000-000000000123」といったものである。同図の例では1つのデバイスIDに関する複数の通知手段のエントリが示されているが、実際には、異なるIDを有するノード(メッセージングサーバ100、通知サーバ200及び複数のデバイス300)についてそれぞれ通知手段のエントリが記載される。
 本実施形態では、通知手段として、「Global IP」、「UPnP IGD」、「User Setting」及び「Server」の4つが存在する。上記通知サーバ200は、上記通信中継装置310により、外部(メッセージングサーバ100)からの直接の通信が行えない場合のために設けられるものである。したがって、通信中継装置310が存在しない場合や、通信中継装置310に特別な設定が可能である場合には、メッセージングサーバ100は、通知サーバ200によらずに通知処理を実行可能である。
 「Global IP」は、デバイス300(例えばモバイルデバイス)にグローバルIPアドレスが割り振られており、メッセージングサーバ100からデバイス300に、通信中継装置310を介さずに直接接続可能であることを示す。このエントリでは、関連情報として、ノードIDに対応するノードのグローバルIPアドレス及びポート番号が記載される。
 「UPnP IGD」は、通信中継装置310が、それに接続されたローカル側のノードからの指示により、外部からの通信を内部の特定のノードへ転送する設定が可能とされており、メッセージングサーバ100から通信中継装置310を経由してデバイス300へ接続可能であることを示す。これは具体的には、通信中継装置310としてのNATルータが、UPnP IGDプロトコルによるNAT Traversal機構をサポートしている場合である。この場合、内部のデバイス300が、メッセージングサーバ100と共同してWAN50側のポート番号とLAN側のポート番号とを決定して、当該WAN50側のポート番号への通信を、当該LAN側のIPアドレス/ポート番号へ転送するように、NATルータに設定する。メッセージングサーバ100は、当該WAN側のIPアドレス及びポート番号を、通知手段リスト上で関連情報として記憶しておき、デバイス300と通信する際には、当該記憶されたIPアドレス及びポート番号を用いる。
 「User Setting」は、「UPnP IGD」と同様の転送設定が、デバイス300からの指示ではなく、ポートフォワーディング機構を用いて、ユーザが手動で変更することにより可能とされていることを示す。この場合も、設定されたIPアドレス及びポート番号は関連情報として記憶される。
 「Server」は、メッセージングサーバ100が通知サーバ200を経由して各デバイス300へ接続可能であることを示す。各デバイス300が上記NAT Traversal機構等をサポートしない通常の通信中継装置310を経由してクラウド側と接続される場合は、当該通知手段が用いられる。
 この通知手段リストは、同一デバイスの情報が複数のエントリとして存在することもある。例えば、デバイス300がスマートフォン等の携帯端末であって、それが携帯電話のネットワークにも、Wireless LANにも接続されている場合などである。また、実際の運用時においては、当該リストの各エントリに有効期限が設けられてもよい。
 接続情報リスト104は、メッセージングサーバ100が、その時点で保持している接続に関する情報を記したリストである。図6にその一例を示す。同図に示すように、接続情報リスト104は、メッセージングサーバ100が接続中の通知サーバ200またはデバイス300について、それらのノードID、IPアドレス及びソケット番号の各項目が記載される。当該接続情報リスト104では、通知サーバ200またはデバイス300との接続が確立されるたびに該当するエントリが追加され、接続が解除された場合には、該当するエントリが削除される。
(通知サーバのモジュール構成)
 図4に示すように、通知サーバ200は、接続処理部201及び接続管理部202の各ソフトウェアモジュールと、データベースとしての接続情報リスト203とを有する。
 接続処理部201は、デバイス300からの接続要求を受け接続を確立する。
 接続管理部202は、メッセージングサーバ100及びデバイス300との全ての接続を管理し、メッセージングサーバ100から通知要求があった場合には、対応するデバイス300に通知メッセージを送信する。
 接続情報リスト203は、通知サーバ200が、その時点で保持している接続に関する情報を記したリストであり、その構成は上記メッセージングサーバ100が有する接続情報リスト104と同様である。
(デバイスのモジュール構成)
 図4に示すように、各デバイス300は、通知手段設定部301、通知サーバ通知受信部302、直接通知受信部303、メッセージ受信部304、メッセージ送信部305及びメッセージ処理部306の各ソフトウェアモジュールを有する。
 通知手段設定部301は、メッセージングサーバ100に、デバイス300が利用可能な通知手段を設定する。
 通知サーバ通知受信部302は、通知サーバ200と接続して、通知メッセージを受信する。
 直接通知受信部303は、通知サーバ200を介さずに、メッセージングサーバ100から直接、通知メッセージを受信する。
 メッセージ受信部304は、メッセージングサーバ100と接続して、他のデバイス300から送信されたデータ(メッセージ)を受信する。
 メッセージ送信部305は、メッセージングサーバ100と接続して、他のデバイス宛のデータ(メッセージ)を送信する。
 メッセージ処理部306は、メッセージングサーバ100から受信したデータ(メッセージ)を処理する。
 メッセージ送信側のデバイス300Aは、最低限、メッセージ送信部305を有していればよいため、同図では、その他のモジュールブロックを破線で示している。しかし、もちろん、送信側のデバイス300Aは、受信側のデバイス300Bと同様にそれらのモジュールを有していてもよい。同様に、同図ではメッセージ受信側のデバイス300Bにおいて、メッセージ送信部305が破線で示されているが、当該デバイス300Bもメッセージ送信部305を有していてもよい。
[システムの動作]
 次に、以上のように構成されたシステムにおけるメッセージングサーバ100、通知サーバ200及びデバイス300の動作について、デバイス300間のデータ(メッセージ)送信処理を中心に説明する。本実施形態及び他の実施形態において、システムを構成する各ノードにおける動作は、CPUと、その制御下において実行される上記各ソフトウェアモジュールとで協働して行われる。
 データ(メッセージ)の送信処理に先立って、メッセージングサーバ100及び通知サーバ200は、初期設定情報として、通知サーバID、メッセージングサーバID及びそれらに対応するネットワークアドレス(ホスト名またはIPアドレス/ポート番号)等を予め各デバイス300へ通知しておく。
(データ送信処理例:通知手段が通知サーバである場合)
 まず、通知手段が通知サーバ200である場合の、デバイス300間のデータ(メッセージ)送信処理の流れを説明する。図7はこの場合のデバイス300Aからデバイス300Bへのデータ送信処理の流れの概要を模式的に示した図である。
 同図に示すように、まず、メッセージ受信側(宛先)のデバイス300Bが、クラウド側との通信環境を確認した上で、通信中継装置310Bを介して通知サーバ200と接続する(同図(1))。当該接続は常時維持される。
 続いて、デバイス300Bは、通信中継装置310Bを介してメッセージングサーバ100と接続して、通知手段として通知サーバ200を設定する(通知手段設定情報を送信する)(同図(2))。
 続いて、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(同図(3))。
 続いて、メッセージを受信したメッセージングサーバ100は、通知サーバ200に対して、デバイス300Aからデバイス300B宛のメッセージの存在を通知する通知メッセージの送信要求(通知要求)を送信する(同図(4))。
 続いて、上記通知要求を受信した通知サーバ200は、既に確立しているデバイス300Bとの接続を用いて、デバイス300Bに上記通知メッセージを送信する(同図(5))。
 そして、上記通知メッセージを受信したデバイス300Bが、通信中継装置310Bを介してメッセージングサーバ100と接続を確立して、上記デバイス300Aからのメッセージを受信する(同図(6))。
(データ送信処理例:通知手段がGlobal IPである場合)
 次に、通知手段がGlobal IPである場合の、デバイス300間のデータ(メッセージ)送信処理の流れを説明する。図8はこの場合のデバイス300Aからデバイス300Bへのデータ送信処理の流れの概要を模式的に示した図である。
 同図に示すように、まず、メッセージ受信側(宛先)のデバイス300Bが、クラウド側との通信環境を確認する(同図(1))。
 続いて、デバイス300Bは、クラウド側と直接通信が可能であることを確認すると、メッセージングサーバ100と接続して、通知手段としてGlobal IPを設定する(同図(2))。
 続いて、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(同図(3))。
 続いて、メッセージを受信したメッセージングサーバ100は、デバイス300Bと接続を確立して、上記通知メッセージを直接、デバイス300Bへ送信する(同図(4))。
 そして、上記通知メッセージを受信したデバイス300Bが、メッセージングサーバ100と接続を確立して、上記デバイス300Aからのメッセージを受信する(同図(5))。
(データ送信処理例:通知手段がUPnP IGDである場合)
 次に、通知手段がUPnP IGDである場合の、デバイス300間のデータ(メッセージ)送信処理の流れを説明する。図9はこの場合のデバイス300Aからデバイス300Bへのデータ送信処理の流れの概要を模式的に示した図である。
 同図に示すように、まず、メッセージ受信側(宛先)のデバイス300Bが、クラウド側との通信環境を確認した上で、UPnP IGDによるNAT Traversal機構を用いて、通信中継装置310B(ルータ)に対して、クラウド側からの通信をデバイス300Bに転送するように設定する(同図(1))。
 続いて、デバイス300Bは、通信中継装置310Bを介してメッセージングサーバ100と接続して、通知手段としてUPnP IGDを設定する(同図(2))。
 続いて、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(同図(3))。
 続いて、メッセージを受信したメッセージングサーバ100は、上記UPnP IGDの設定を元に、デバイス300Bと接続を確立して、上記通知メッセージを通信中継装置310Bを介してデバイス300Bへ送信する(同図(4))。
 そして、上記通知メッセージを受信したデバイス300Bが、上記UPnP IGDの設定を元に、メッセージングサーバ100と接続を確立して、通信中継装置310Bを介して上記デバイス300Aからのメッセージを受信する(同図(5))。
(データ送信処理例:通知手段がUser Settingである場合)
 次に、通知手段がUser Settingである場合の、デバイス300間のデータ(メッセージ)送信処理の流れを説明する。図10はこの場合のデバイス300Aからデバイス300Bへのデータ送信処理の流れの概要を模式的に示した図である。
 同図に示すように、まず、メッセージ受信側(宛先)のデバイス300Bのユーザが、クラウド側との通信環境を確認した上で、ポートフォワーディング機構を用いて、通信中継装置310B(ルータ)に対して、クラウド側からの通信をデバイス300Bに転送するように手動で設定する(同図(1))。
 続いて、デバイス300Bは、通信中継装置310Bを介してメッセージングサーバ100と接続して、通知手段としてUser Settingを設定する(同図(2))。
 続いて、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(同図(3))。
 続いて、メッセージを受信したメッセージングサーバ100は、上記ポートフォワーディング機構による設定を元に、デバイス300Bと接続を確立して、通信中継装置310Bを介して上記通知メッセージをデバイス300Bへ送信する(同図(4))。
 そして、上記通知メッセージを受信したデバイス300Bが、上記ポートフォワーディング機構による設定を元に、メッセージングサーバ100と接続を確立して、通信中継装置310Bを介して上記デバイス300Aからのメッセージを受信する(同図(5))。
(デバイスの動作)
 次に、上述の送信処理におけるデバイス300の動作について説明する。
 図11は、メッセージの送信元であるデバイス300Aの上記メッセージ送信部305の動作の流れを示したフローチャートである。
 同図に示すように、メッセージ送信部305はまず、デバイス300AのノードID(デバイスID)から、対応するメッセージングサーバ100を判定する(ステップ111)。上述のように、本実施形態では、メッセージングサーバ100は1台のみであり、各デバイス300には、そのサーバID及びネットワークアドレスが予め知らされているため、メッセージ送信部305は当該情報によりメッセージングサーバ100を特定する。
 続いてメッセージ送信部305は、通信中継装置310Aを介して、メッセージングサーバ100と接続を確立する(ステップ112)。
 続いてメッセージ送信部305は、デバイス300B宛のメッセージをメッセージングサーバ100へ送信する(ステップ113)。
 そしてメッセージ送信部305は、メッセージの送信が完了すると、メッセージングサーバ100との接続を解除する(ステップ114)。
 図12は、データ(メッセージ)の宛先となるデバイス300Bの上記通知手段設定部301の動作の流れを示したフローチャートである。
 同図に示すように、通知手段設定部301はまず、デバイス300BのノードID(デバイスID)から、対応するメッセージングサーバ100を決定する(ステップ121)。上述のように、本実施形態では、デバイス300Bにも、メッセージングサーバ100のサーバID及びネットワークアドレスが予め知らされているため、通知手段設定部301は当該情報によりメッセージングサーバ100を特定する。
 続いて通知手段設定部301は、通信中継装置310Bを介して、メッセージングサーバ100と接続を確立する(ステップ122)。
 続いて通知手段設定部301は、メッセージングサーバ100に、上述した4つのうち少なくとも1つの通知手段を特定した通知手段設定情報を送信する(ステップ123)。
 そして通知手段設定部301は、通知手段設定情報の送信が完了すると、メッセージングサーバ100との接続を解除する(ステップ124)。
 図13は、デバイス300Bの上記通知サーバ通知受信部302の動作の流れを示したフローチャートである。上述のように、この動作は通知手段が通知サーバ200に設定されている場合に行われる。
 同図に示すように、通知サーバ通知受信部302はまず、デバイス300BのノードID(デバイスID)から、対応する通知サーバ200を決定する(ステップ131)。上述のように、本実施形態では、通知サーバ200は1台のみであり、各デバイス300には、そのサーバID及びネットワークアドレスが予め知らされているため、通知サーバ通知受信部302は当該情報により通知サーバ200を特定する。
 続いて通知サーバ通知受信部302は、通信中継装置310Bを介して、通知サーバ200と接続を確立する(ステップ132)。
 続いて通知サーバ通知受信部302は、デバイス300BのノードID(デバイスID)を通知サーバ200へ通知する(ステップ133)。
 続いて通知サーバ通知受信部302は、メッセージングサーバ100からの通知要求を受けた通知サーバ200から、通知メッセージを受信する(ステップ134)。
 続いて、通知メッセージを受信した通知サーバ通知受信部302は、その時点でメッセージングサーバ100との接続が確立されているか否かを判断する(ステップ135)。
 メッセージングサーバ100との接続が確立されていないと判断した場合(Yes)には、通知サーバ通知受信部302は、メッセージ受信部304に、メッセージングサーバ100との接続を要求する(ステップ136)。
 通知サーバ通知受信部302は、上記ステップ134~136の処理を、通知メッセージを受信するたびに繰り返す。
 図14は、デバイス300Bの上記直接通知受信部303の動作の流れを示したフローチャートである。上述のように、この動作は、通知手段が通知サーバ200以外に設定されている場合に行われる。
 同図に示すように、直接通知受信部303はまず、メッセージングサーバ100から送信される通知メッセージの受信待ち処理する(ステップ141)。
 続いて直接通知受信部303は、メッセージングサーバ100から通知メッセージを受信する(ステップ142)。
 続いて、通知メッセージを受信した直接通知受信部303は、その時点でメッセージングサーバ100との接続が確立されているか否かを判断する(ステップ143)。
 メッセージングサーバ100との接続が確立されていないと判断した場合(Yes)には、直接通知受信部303は、メッセージ受信部304に、メッセージングサーバ100との接続を要求する(ステップ144)。
 直接通知受信部303は、上記ステップ142~144の処理を、通知メッセージを受信するたびに繰り返す。
 図15は、デバイス300Bの上記メッセージ受信部304及びメッセージ処理部306の動作の流れを示したフローチャートである。
 同図に示すように、メッセージ受信部304はまず、上述と同様に、デバイス300BのノードID(デバイスID)から、対応するメッセージングサーバ100を判定する(ステップ151)。
 続いてメッセージ受信部304は、通信中継装置310Bを介して、(通知手段がGlobal IPの場合は、通信中継装置310Bを介さずに直接)メッセージングサーバ100と接続を確立する(ステップ152)。
 続いてメッセージ受信部304は、デバイス300BのノードID(デバイスID)をメッセージングサーバ100へ通知する(ステップ153)。
 続いてメッセージ受信部304はメッセージングサーバ100からのメッセージの受信、タイムアウト、エラーまたは通信切断の何れかを待つ(ステップ154)。
 メッセージを受信した場合(ステップ155のYes)、メッセージ処理部306は、受信したメッセージを処理する(ステップ156)。
 メッセージを受信しないままタイムアウトし、またはエラーが発生した場合(ステップ157のYes)には、メッセージ受信部304は、メッセージングサーバ100との接続を解除する(ステップ158)。
 メッセージ受信部304及びメッセージ処理部306は、上記ステップ154~158の処理を、メッセージングサーバ100との接続確立のたびに繰り返す。
(通知サーバの動作)
 次に、上述の送信処理における通知サーバ200の動作について説明する。
 図16は、通知サーバ200の上記接続処理部201の動作の流れを示したフローチャートである。
 同図に示すように、接続処理部201はまず、デバイス300またはメッセージングサーバ100からの接続要求を待つ(ステップ161)。
 デバイス300またはメッセージングサーバ100からの接続要求があった場合(ステップ162のYes)、接続処理部201は、当該接続要求を受け入れ、接続を確立する(ステップ163)。
 続いて接続処理部201は、接続元のデバイス300またはメッセージングサーバ100から、それらのノードID(デバイス300のデバイスIDまたはメッセージングサーバ100のサーバID)を受信する(ステップ164)。
 そして接続処理部201は、上記接続情報リスト203に上記ノードID及び接続に関する情報(IPアドレス及びソケット番号)を記録し、それらを新たに接続管理対象に加える(ステップ165)。
 図17は、通知サーバ200の上記接続管理部202の動作の流れを示したフローチャートである。
 同図に示すように、接続管理部202はまず、上記接続情報リスト203で管理している全ての接続について、メッセージの受信、エラーまたは通信切断の何れかを待つ(ステップ171)。
 続いて接続管理部202は、メッセージを受信したか否かを判断する(ステップ172)。
 メッセージを受信したと判断した場合(Yes)、接続管理部202は、当該メッセージがメッセージングサーバ100からの通知要求であるか否かを判断する(ステップ173)。
 上記メッセージがメッセージングサーバ100からの通知要求であると判断した場合(Yes)、接続管理部202は、受信したメッセージから、通知対象(通知メッセージの送信対象)のデバイス300のデバイスIDを取得する(ステップ174)。
 続いて接続管理部202は、上記接続情報リスト203に、上記取得したデバイスIDと合致するエントリが存在するか否かを判断する(ステップ175)。
 取得したデバイスIDと合致するエントリが存在すると判断した場合(ステップ176のYes)、接続管理部202は、当該エントリに対応する接続(IPアドレス及びソケット番号)を用いて、対象のデバイス300に通知メッセージを送信する(ステップ177)。
 上記ステップ172において、メッセージを受信していないと判断した場合(No)、接続管理部202は、管理対象のいずれかの接続について、エラーの発生または通信切断があったか否かを判断する(ステップ178)。
 エラーの発生または通信切断があったと判断した場合(Yes)、接続管理部202は、当該エラーが発生しまたは通信が切断された接続に関するエントリを接続情報リスト203から除外する(ステップ179)。
(メッセージングサーバの動作)
 次に、上述の送信処理におけるメッセージングサーバ100の動作について説明する。
 図18は、メッセージングサーバ100の上記接続処理部101の動作の流れを示したフローチャートである。
 同図に示すように、接続処理部101はまず、デバイス300からの接続要求を待つ(ステップ181)。
 デバイス300からの接続要求があった場合(ステップ182のYes)、接続処理部101は、当該デバイス300からの接続要求を受け入れ、接続を確立する(ステップ183)。
 続いて接続処理部101は、接続元のデバイス300から、そのデバイスIDを受信する(ステップ184)。
 そして接続処理部101は、上記接続情報リスト104に上記デバイスID及び接続に関する情報(IPアドレス及びソケット番号)を記録し、当該デバイス300を新たに接続管理対象に加える(ステップ185)。
 図19は、メッセージングサーバ100の上記接続管理部102及び上記メッセージ処理部105の動作の流れを示したフローチャートである。
 同図に示すように、接続管理部102はまず、上記接続情報リスト104で管理している全ての接続について、メッセージの受信、エラーまたは通信切断の何れかを待つ(ステップ191)。
 続いて接続管理部102は、メッセージを受信したか否かを判断する(ステップ192)。
 メッセージを受信したと判断した場合(Yes)、接続管理部102は、当該メッセージから、その送付先に設定されているノードIDを取得する(ステップ193)。
 続いて接続管理部102は、取得したノードIDが、メッセージングサーバ100のノードID(サーバID)であるか否かを判断する(ステップ194)。
 上記ノードIDがメッセージングサーバ100のノードIDであると判断した場合(Yes)、メッセージ処理部105が上記メッセージを処理する(ステップ195)。
 一方、送付先のノードIDがメッセージングサーバ100のノードIDでないと判断した場合(No)、接続管理部102は、送付先に設定されているノードIDから、それに対応するメッセージングサーバのノードIDを判定する(ステップ196)。
 上述のように、本実施形態では、メッセージングサーバ100は1台のみであるから、接続管理部102は、送付先に対応するサーバのノードIDは自身(メッセージングサーバ100)のノードIDであると判定する(ステップ197のYes)。
 そして接続管理部102は、メッセージ送信部106へ上記メッセージを引き渡す(ステップ198)。
 上記ステップ192において、メッセージを受信していないと判断した場合(No)、接続管理部102は、管理対象のいずれかの接続について、エラーの発生または通信切断があったか否かを判断する(ステップ199)。
 エラーの発生または通信切断があったと判断した場合(Yes)、接続管理部102は、当該エラーが発生しまたは通信が切断された接続に関するエントリを接続情報リスト104から除外する(ステップ200)。
 図20は、メッセージングサーバ100の上記メッセージ送信部106の動作の流れを示したフローチャートである。
 同図に示すように、メッセージ送信部106はまず、上記通知手段リスト103から、送付先に設定されているノードIDと合致するエントリを取得する(ステップ201)。
 上記通知手段リスト103に、上記ノードIDと合致するエントリが存在しないと判断した場合(ステップ202のYes)は、メッセージ送信部106は、処理を終了する。
 上記ノードIDと合致するエントリが存在すると判断した場合(ステップ202のNo)、メッセージ送信部106は、当該エントリの通知手段が、通知サーバ200以外に設定されているか否かを判断する(ステップ203)。
 上記通知手段が通知サーバ200以外に設定されていると判断した場合(Yes)、メッセージ送信部106は、当該エントリ上の関連情報に基づいて、メッセージ送付先のデバイス300(300B)と接続を確立する(ステップ204)。
 続いてメッセージ送信部106は、上記接続を用いて、上記通知メッセージをデバイス300へ送信する(ステップ205)。
 通知メッセージの送信が完了した場合、メッセージ送信部106は、上記デバイス300との接続を解除する(ステップ206)。
 一方、上記ステップ203で、通知手段が通知サーバ200に設定されていると判断した場合(No)、メッセージ送信部106は、送付先に設定されているノードIDから、それに対応する通知サーバ200のノードID(サーバID)を判定する(ステップ207)。
 続いてメッセージ送信部106は、上記ノートIDを有する通知サーバ200へ、メッセージの送付先に設定されているデバイス300への通知要求を、そのノードID(デバイスID)とともに送信する(ステップ209)。当該送信が完了した場合、メッセージ送信部106は、通知サーバ200との接続を解除する(ステップ210)。
 続いてメッセージ送信部106は、メッセージ送付先のデバイス300からの新たな接続またはタイムアウトを待つ(ステップ211)。
 当該送付先のノードIDを有するデバイス300がメッセージングサーバ100に接続されたと判断した場合(ステップ212のYes)、メッセージ送信部106は、当該ノードIDに対応する接続を用いて、当該デバイス300へメッセージを送信する(ステップ213)。
 一方、通知サーバ200への通知要求を送信してから、所定の時間内に、上記送付先のノードIDを有するデバイス300から接続がない(タイムアウトした)場合(ステップ214のYes)、メッセージ送信部106は、メッセージを破棄する(ステップ215)。
 そしてメッセージ送信部106は、上記通知手段リスト103から、上記送付先のノードIDと合致する次のエントリを取得し(ステップ216)、上記ステップ202以降の処理を繰り返す。
[まとめ]
 以上説明したように、本実施形態では、クラウド側に、メッセージングサーバ100に加えて、デバイス300への通知手段としての通知サーバ200が設けられることで、各デバイス300は、通信中継装置310が存在する場合でも、クラウド側と常時接続することができる。また、それにより、メッセージングサーバ100の負荷も軽減する。
 また、全てのデバイス300がメッセージングサーバ100に常時接続する場合と比較して、通知サーバ200に常時接続した上で、必要なときのみにメッセージングサーバ100に接続することの利点は、後者の方が、1台のサーバに接続できるデバイス300の数を大幅に増やすことができることである。例えば、メッセージングサーバ100が1台でサポート可能なデバイス数が5万台だとすると、通知サーバ200が1台でサポート可能なデバイス数は100万台となる。
 メッセージングサーバ100では、行われる処理が複雑な上に、通信の効率の観点から、1つの接続あたりの通信バッファサイズを十分に用意する必要がある。しかし、通知サーバ200では、通知サーバ200は、単にデバイス300へ非常に小さなメッセージ(通知メッセージ)を送付する機能だけ有していればよく、処理も非常にシンプルな上に、通信バッファも最小限で済む。したがって、通知サーバ200が1台あたりに必要なリソースを極限まで最小化することができる。
 さらに本実施形態では、他の通知手段として、通信中継装置310に外部からの通信を内部の特定のデバイス300へ転送するように設定可能な場合には、当該機構が用いられることで、クラウド側の負荷がさらに軽減される。UPnP IGD等、通知サーバ200以外の手段は、単独では全てのデバイス300間の通信に適用できない場合もあるが、上記通知サーバ200を前提としたシステムにおいては、システム全体の負荷を軽減するための手段としては有効に機能する。
<第2の実施形態>
 次に、本技術の第2の実施形態を説明する。本実施形態において、上記第1の実施形態と同様の構成及び機能を有する箇所には同一の符号を付し、説明を省略する。
[システムのネットワーク構成]
 図21は、本実施形態に係るシステムのネットワーク構成を示した図である。
 上記第1の実施形態では、メッセージングサーバ100及び通知サーバ200はクラウド(WAN50)側にそれぞれ1台のみ設けられたが、同図に示すように、本実施形態では、メッセージングサーバ100及び通知サーバ200がそれぞれ複数設けられる。後述するが、このような構成により、デバイス300からのメッセージが、複数のメッセージングサーバ100間で中継される。
 同図では、メッセージングサーバ100は計6台、通知サーバ200は計2台示されているが、メッセージングサーバ100及び通知サーバ200の数はこれらに限られない。
[各機器のモジュール構成]
 図22は、上記メッセージングサーバ100、通知サーバ200及びデバイス300がそれぞれ有するソフトウェアモジュールの構成を示した図である。
(メッセージングサーバのモジュール構成)
 同図に示すように、メッセージングサーバ100は、上記第1の実施形態と同様のモジュール(図4参照)に加えて、メッセージ転送部107を有する。
 メッセージ転送部107は、メッセージングサーバ100(100A)が自ら担当しないデバイス300へメッセージを送るために、当該メッセージを他のメッセージングサーバ100(100B)へ転送する。
 本実施形態において、通知サーバ200及びデバイス300が有するモジュールの構成は第1の実施形態で説明したものと同様である。
[システムの動作]
 次に、以上のように構成されたシステムにおけるメッセージングサーバ100、通知サーバ200及びデバイス300の動作について、デバイス300間のデータ(メッセージ)送信処理を中心に説明する。
(デバイスが利用するサーバの決定処理)
 本実施形態では、メッセージングサーバ100及び通知サーバ200が複数設けられることから、メッセージの送信処理に先立ち、各デバイス300がどのメッセージングサーバ100及び通知サーバ200を利用するかが予め決定される。このデバイス300とそれが利用する各サーバとの対応関係は、デバイスIDを基にした所定の計算により決定される。この決定処理についてまず説明する。
 以下で説明する決定処理は一例であり、メッセージングサーバ100とデバイス300の双方で実行でき、どちらで実行しても同じ結果が得られることが保証されさえすれば、どのような方法で対応関係が決定されてもよい。
 図23は、当該デバイス300に対応するサーバの決定処理の流れを示したフローチャートである。以下の処理は、メッセージングサーバ100の上記メッセージ転送部107が実行するものとして説明するが、他のモジュールが実行しても構わない。
 同図に示すように、メッセージ転送部107は、まず、メッセージングサーバ100及び通知サーバ200のそれぞれについて、0から0xffffffffまでの値を、実際に用いるサーバの数に応じて分割し、サーバ割り当てテーブルを作成しておく(ステップ271)。当該テーブルは例えば記憶部18に記憶される。
 図24は、メッセージングサーバ100についてのサーバ割り当てテーブルの例を示した図であり、図25は、通知サーバ200についてのサーバ割り当てテーブルの例を示した図である。両図に示すように、上記0から0xffffffffまでの値が所定の範囲ごとに分割され、当該値の範囲に対してそれぞれメッセージングサーバ100及び通知サーバ200の各サーバIDが割り当てられている。
 続いてメッセージ転送部107は、サーバ割り当て対象のデバイス300から、そのノードIDを受信する(ステップ272)。
 続いてメッセージ転送部107は、上記受信したノードIDと、所定のパディングデータとを組み合わせて、SHA256-HASHによるハッシュ値を計算する(ステップ273)。
 続いてメッセージ転送部107は、得られたハッシュ値から、その下位32ビットを取り出す(ステップ274)。
 そしてメッセージ転送部107は、上記取り出した下位32ビットを、上記サーバ割り当てテーブルから検索して、それに割り当てられたサーバIDを参照することで、対応するサーバIDを決定する(ステップ275)。
 同図では、メッセージングサーバ100が決定処理を実行する例が示されたが、上記処理の全てまたは一部(例えばステップ272~274)は、デバイス300で実行されてもよい。その際、上記サーバ割り当てテーブル等、必要な情報はメッセージングサーバ100からデバイス300へ送信される。
 また、上記第1の実施形態と同様に、デバイスIDは、各デバイス300のハードウェアに埋め込まれた情報(Wireless LANのMACアドレスや携帯電話のIMEI等)に基づいて決定される。したがって、ユーザは、デバイス300を購入後、何も設定しなくても、当該デバイス300に対応するメッセージングサーバ100及び通知サーバ200と接続ができ、それらを介して任意の他のデバイス300と通信できる環境を享受できる。
(サーバのネットワークアドレスの決定処理)
 本実施形態では、メッセージングサーバ100及び通知サーバ200が複数設けられることから、上記複数のメッセージングサーバ100及び通知サーバ200のサーバIDに対応する、TCP/IP上のネットワークアドレスも予め決定する必要がある。以下、当該ネットワークアドレスの決定処理について説明する。
 このネットワークアドレスの決定処理についても、以下の説明は一例であり、メッセージングサーバ100とデバイス300の双方で実行でき、どちらで実行しても同じ結果が得られることが保証されさえすれば、どのような方法で実行されてもよい。
 以下では、上記ネットワークアドレス(IPアドレス及びポート番号)を決定するために、(1)DNS(Domain Name System)を用いる例と、(2)レゾリューションテーブルを用いる例とを説明する。以下の処理も、メッセージングサーバ100の上記メッセージ転送部107が実行するものとして説明するが、他のモジュールが実行しても構わない。
(1)DNSを用いる例
 メッセージングサーバ100のメッセージ転送部107は、ネットワークアドレス決定対象である他のメッセージングサーバ100のサーバ番号から、ホスト名を生成する。そしてメッセージ転送部107は、当該ホスト名を基に、TCP/IPネットワーク上のDNS機構を用いてIPアドレスを取得する。
 例えば、メッセージングサーバ100のホスト名は"ms15.server.com"と生成され、通知サーバのホスト名は"ns1.server.com"と生成される。
 また、それぞれのポート番号としては、固定値が用いられる。
 そして、上記取得されたIPアドレス及びポート番号は、デバイス300、他のメッセージングサーバ100及び通知サーバ200に配布される。
(2)レゾリューションテーブルを用いる例
 メッセージ転送部107は、サーバ番号に対応するIPアドレス及びポート番号を定めたレゾリューションテーブルを、メッセージングサーバ100と通知サーバ200のそれぞれについて作成する。これらレゾリューションテーブルは、デバイス300、他のメッセージングサーバ100及び通知サーバ200に配布される。
 図26は、メッセージングサーバ100用のレゾリューションテーブルの例を示した図であり、図27は、通知サーバ200用のレゾリューションテーブルの例を示した図である。
(データ送信処理例)
 次に、本実施形態におけるデバイス300間のデータ(メッセージ)送信処理を説明する。図28は、当該デバイス300間におけるデータ送信処理の流れの概要を模式的に示した図である。
 同図に示すように、まず、メッセージ送信元のデバイス300Aが、デバイス300B宛のメッセージをメッセージングサーバ100Aへ送信する(同図(1))。
 続いて、メッセージを受信したメッセージングサーバ100Aは、それが他のメッセージングサーバ100Bが対応すべきメッセージであると判断すると、当該メッセージをメッセージングサーバ100Bへ転送する(同図(2))。
 続いて、メッセージを転送されたメッセージングサーバ100Bが、それに対応した通知サーバ200Bに対して、デバイス300Aからデバイス300B宛のメッセージの存在を通知するよう要求する通知要求を送信する。当該通知要求を受けた通知サーバ200Bは、それに対応するデバイス300Bへ通知メッセージを送信する(同図(3))。
 そして、上記通知メッセージを受信したデバイス300Bが、それに対応するメッセージングサーバ100Bと接続を確立して、上記デバイス300Aからのメッセージを受信する(同図(4))。
(メッセージングサーバの動作)
 次に、上記送信処理におけるメッセージングサーバ100の動作について説明する。以下の説明では、デバイス300から最初にメッセージを受信するメッセージングサーバ100Aの動作を示す。また、他のメッセージングサーバ100を説明の便宜上メッセージングサーバ100Bと称する。
 図29は、メッセージングサーバ100Aの接続処理部101の動作の流れを示したフローチャートである。
 同図に示すように、接続処理部101はまず、デバイス300または他のメッセージングサーバ100Bからの接続要求を待つ(ステップ291)。
 デバイス300または他のメッセージングサーバ100Bからの接続要求があった場合(ステップ292のYes)、接続処理部101は、当該接続要求を受け入れ、接続を確立する(ステップ293)。
 続いて接続処理部101は、接続元のデバイス300または他のメッセージングサーバ100Bから、そのノードID(デバイスID、サーバID)を受信する(ステップ294)。
 そして接続処理部101は、上記接続情報リスト104に上記ノードID及び接続に関する情報(IPアドレス及びソケット番号)を記録し、当該デバイス300または他のメッセージングサーバ100Bを新たに接続管理対象に加える(ステップ295)。
 図30は、メッセージングサーバ100Aの接続管理部102の動作の流れを示したフローチャートである。
 同図に示すように、接続管理部102はまず、上記接続情報リスト104で管理している全ての接続について、メッセージの受信、エラーまたは通信切断の何れかを待つ(ステップ301)。
 続いて接続管理部102は、メッセージを受信したか否かを判断する(ステップ302)。
 メッセージを受信したと判断した場合(Yes)、接続管理部102は、当該メッセージから、その送付先に設定されているノードIDを取得する(ステップ303)。
 続いて接続管理部102は、取得したノードIDが、メッセージングサーバ100AのノードID(サーバID)であるか否かを判断する(ステップ304)。
 上記ノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、メッセージ処理部105が上記メッセージを処理する(ステップ305)。
 一方、送付先のノードIDがメッセージングサーバ100AのノードIDでないと判断した場合(No)、接続管理部102は、上記サーバ割り当てテーブルを参照して、送付先に設定されているノードIDから、それに対応するメッセージングサーバのノードIDを判定する(ステップ306)。
 続いて接続管理部102は、上記ユーザIDに対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであるか否かを判断する(ステップ307)。
 対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、接続管理部102は、メッセージ送信部106へ上記メッセージを引き渡す(ステップ308)。
 一方、対応するメッセージングサーバのノードIDが他のメッセージングサーバ100BのノードIDであると判断した場合(No)、接続管理部102は、メッセージ転送部107へ上記メッセージを引き渡す(ステップ309)。
 上記ステップ302において、メッセージを受信していないと判断した場合(No)、接続管理部102は、管理対象のいずれかの接続について、エラーの発生または通信切断があったか否かを判断する(ステップ310)。
 エラーの発生または通信切断があったと判断した場合(Yes)、接続管理部102は、当該エラーが発生しまたは通信が切断された接続に関するエントリを接続情報リスト104から除外する(ステップ311)。
 図31は、メッセージングサーバ100Aのメッセージ転送部107の動作の流れを示したフローチャートである。
 同図に示すように、メッセージ転送部107は、上記接続情報リスト104に基づき、他のメッセージングサーバ100BのノードIDに対応する接続が存在するか(他のメッセージングサーバ100Bに既に接続されているか)否かを確認する(ステップ311)。
 対応する接続が存在すると判断した場合(ステップ312のYes)、メッセージ転送部107は、当該接続された他のメッセージングサーバ100Bへメッセージを転送する(ステップ313)。
 一方、対応する接続が存在しないと判断した場合(ステップ312のNo)、メッセージ転送部107は、当該他のメッセージングサーバ100Bと接続を確立する(ステップ314)。
 そしてメッセージ転送部107は、上記接続情報リスト104にそのエントリを追加した上で(ステップ315)、上記ステップ311以降の処理を繰り返す。
[まとめ]
 以上説明したように、本実施形態においては、メッセージングサーバ100及び通知サーバ200が複数設けられ、メッセージングサーバ100間でメッセージが転送されることで、非常に多数のデバイス300間での通信がサポートされる。
<第3の実施形態>
 次に、本技術の第3の実施形態を説明する。本実施形態において、上記第1及び第2の実施形態と同様の構成及び機能を有する箇所には同一の符号を付し、説明を省略する。
[システムのネットワーク構成]
 図32は、本実施形態に係るシステムのネットワーク構成を示した図である。
 上述の第1及び第2の実施形態では、各デバイス300をそれぞれ別々のユーザが所有することを前提にしていた。しかし、複数のデバイス300を複数のユーザが所有することも当然あり得る。その場合、同じユーザが所有するデバイス300間の通信は、他と比較して多くなると考えられる。そこで本実施形態では、各デバイス300の「オーナー」という概念を導入し、オーナーを識別するユーザIDが設定されているデバイス300については、当該ユーザIDからそれに対応するメッセージングサーバ100及び通知サーバ200を決定することとしている。
 同図に示すように、本実施形態でも、上記第2の実施形態と同様に、メッセージングサーバ100及び通知サーバ200はそれぞれクラウド上に複数存在する。またデバイス300中、デバイス300Bとデバイス300Cには同一のユーザがオーナーとして設定されている。この場合、デバイス300Bはメッセージングサーバ100B及び通知サーバ200Bがその対応する各サーバとして設定される。またデバイス300Cについては、上記第2の実施形態で説明したサーバ割り当てテーブルに基づいて、メッセージングサーバ100Cと通知サーバ200Cがその対応する各サーバに設定されるほか、デバイス300Bと同一のユーザIDを有することから、メッセージングサーバ100B及び通知サーバ200Bもその対応する各サーバとして設定される。
[システムの動作]
 次に、以上のように構成されたシステムにおけるメッセージングサーバ100、通知サーバ200及びデバイス300の動作について、デバイス300間のデータ(メッセージ)送信処理を中心に説明する。
(ユーザIDを基にした利用サーバの決定処理)
 メッセージングサーバ100は、初期データとして、上記第2の実施形態で説明したようなデバイスIDを基にしたメッセージングサーバ割り当てテーブル及び通知サーバ割り当てテーブル(以下、デバイスID用サーバ割り当てテーブルと称する)に加えて、ユーザIDを基にしたメッセージングサーバ割り当てテーブル及び通知サーバ割り当てテーブル(以下、ユーザID用サーバ割り当てテーブルと称する)を作成する。これらのテーブルは予め各デバイス300並びに各メッセージングサーバ100及び通知サーバ200へ配布される。当該ユーザID用サーバ割り当てテーブルの作成方法は、デバイスIDがユーザIDに代わる以外は、上記第2実施形態で説明したのと同様である。
 これらデバイスID用サーバ割り当てテーブル及びユーザID用サーバ割り当てテーブルは、デバイス300側で作成されてもよい。
 上記各テーブルの作成にあたって、デバイスIDを基に割り当てられる各サーバ群と、ユーザIDを基に割り当てられる各サーバ群とは、別個に用意される。
 また各デバイス300は、ユーザID(オーナーID)を記録する手段を有する。各デバイス300の初期状態では、NULLが設定される。
 ユーザIDが未設定のデバイス300は、上記第2実施形態と同様に、デバイスIDによって決定されるメッセージングサーバ100及び通知サーバ200と接続する。
 一方、ユーザIDが設定済みのデバイス300は、デバイスIDとユーザIDのそれぞれによって決定されるメッセージングサーバ100及び通知サーバ200の全てと接続可能とされている。メッセージ送信側のデバイス300は、通常はそのユーザIDによって決定されるメッセージングサーバ100に接続する。メッセージ受信側のデバイス300は、メッセージの宛先にユーザIDが設定されていればそれに対応するメッセージングサーバ100へ接続し、そうでない場合にはデバイスIDに対応するメッセージングサーバ100へ接続する。
 各デバイス300は、メッセージ送付先のデバイス300のデバイスIDとユーザIDの双方を知っている場合には、双方をメッセージの宛先に設定してメッセージを送信する。
 一方、各デバイス300は、メッセージ送付先のデバイス300のデバイスIDのみを知っている場合には、当該デバイスIDをメッセージの宛先に設定してメッセージを送信する。
(メッセージングサーバの動作)
 次に、上記メッセージ送信処理におけるメッセージングサーバ100の動作について説明する。図33は、当該動作の流れを示したフローチャートである。以下の説明では、デバイス300から最初にメッセージを受信するメッセージングサーバ100Aの動作を示す。また、他のメッセージングサーバ100を説明の便宜上メッセージングサーバ100Bと称する。
 同図に示すように、メッセージングサーバ100Aの接続管理部102はまず、上記接続情報リスト104で管理している全ての接続について、メッセージの受信、エラーまたは通信切断の何れかを待つ(ステップ331)。
 続いて接続管理部102は、メッセージを受信したか否かを判断する(ステップ332)。
 メッセージを受信したと判断した場合(Yes)、接続管理部102は、当該メッセージから、その送付先に設定されているユーザID及びノードIDを取得する(ステップ333)。
 続いて接続管理部102は、取得したノードIDが、メッセージングサーバ100AのノードID(サーバID)であるか否かを判断する(ステップ334)。
 上記ノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、メッセージ処理部105が上記メッセージを処理する(ステップ335)。
 一方、送付先のノードIDがメッセージングサーバ100AのノードIDでないと判断した場合(No)、接続管理部102は、送付先としてユーザIDとノードIDの双方が存在するか否かを判断する(ステップ336)。
 送付先のユーザIDとノードIDの双方が存在すると判断した場合(Yes)、接続管理部102は、上記ユーザID用サーバ割り当てテーブルを参照して、送付先に設定されているユーザIDから、それに対応するメッセージングサーバのノードIDを判定する(ステップ337)。
 続いて接続管理部102は、上記ユーザIDに対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであるか否かを判断する(ステップ338)。
 対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、接続管理部102は、メッセージ送信部106へ上記メッセージを引き渡す(ステップ339)。
 一方、対応するメッセージングサーバのノードIDが他のメッセージングサーバ100BのノードIDであると判断した場合(No)、接続管理部102は、メッセージ転送部107へ上記メッセージを引き渡す(ステップ340)。
 上記ステップ336において、送付先のユーザIDとノードIDの双方が存在しない、すなわち、ノードIDのみが存在すると判断した場合(No)、接続管理部102は、上記デバイスID用サーバ割り当てテーブルを参照して、送付先に設定されているノードID(デバイスID)から、それに対応するメッセージングサーバのノードIDを判定する(ステップ341)。
 続いて接続管理部102は、上記ノードIDに対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであるか否かを判断する(ステップ342)。
 対応するメッセージングサーバのノードIDがメッセージングサーバ100AのノードIDであると判断した場合(Yes)、接続管理部102は、メッセージ送信部106へ上記メッセージを引き渡す(ステップ343)。
 一方、対応するメッセージングサーバのノードIDが他のメッセージングサーバ100BのノードIDであると判断した場合(No)、接続管理部102は、メッセージ転送部107へ上記メッセージを引き渡す(ステップ344)。
 上記ステップ332において、メッセージを受信していないと判断した場合(No)、接続管理部102は、管理対象のいずれかの接続について、エラーの発生または通信切断があったか否かを判断する(ステップ346)。
 エラーの発生または通信切断があったと判断した場合(Yes)、接続管理部102は、当該エラーが発生しまたは通信が切断された接続に関するエントリを接続情報リスト104から除外する(ステップ347)。
[まとめ]
 以上説明したように、本実施形態によれば、同一のユーザIDが設定されたデバイス300は、メッセージの宛先に当該ユーザIDが設定されている限り、同一のメッセージングサーバ100及び通知サーバ200に接続することになる。したがって、メッセージングサーバ100間の通信が削減され、クラウド側の負荷が低減する。
[変形例]
 本技術は上述の実施形態にのみ限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々変更され得る。
 上述の各実施形態では、メッセージングサーバ100から通知サーバ200への通信は、通信の度に接続確立/接続解除されるが、一定時間は接続が維持されてもよい。
 上述の各実施形態では、メッセージングサーバ100は、複数の通知手段が利用可能な場合、それらを順に試していた。しかし、メッセージングサーバ100は、レスポンスを向上させるため、複数の通信手段が利用可能な場合、優先順位に従って試してもよいし、複数の通知手段で並行して通知してもよい。
 上述の各実施形態では、通知手段を設定するために各デバイス300に通知手段設定部301が設けられたが、各デバイス300が特定の通知手段しか用いない場合は、通知手段設定部301は省略されてもよい。
 上述の各実施形態では、各デバイス300には、通知サーバ200の利用の有無に応じて、通知サーバ通知受信部302と直接通知受信部303とが設けられたが、それらはどちらか一方のみが動作してもよいし、同時に動作可能とされてもよい。
 上述の各実施形態では、各デバイス300のメッセージ受信部304で用いられる接続は、一度確立すると一定時間保持されていたが、メッセージ受信部304は、必要に応じてサーバと毎回接続してもよい。また上述の各実施形態では、各デバイス300のメッセージ送信部305で用いられる接続は、毎回接続確立/接続解除されるが、一度接続が確立した場合には一定時間それが保持されてもよい。
 上述の各実施形態では、各デバイス300のメッセージ受信部304及びメッセージ送信部305は別個のモジュールとして示されたが、両者で用いられる接続が共用されてもよい。
 上述の各実施形態では、各デバイス300は、メッセージングサーバ100と接続している期間も、通知サーバ200との接続を維持していた。しかし、各デバイス300は、一旦通知サーバ200との接続を切断し、メッセージングサーバ100との接続が解除されたときに、再度通知サーバ200と接続してもよい。
 上述の各実施形態では、デバイス300間のメッセージングサーバ100経由でのやり取りには、全てメッセージが用いられていた。しかし、各デバイス300のアプリケーションには、このメッセージ機構を元に、RPC(Remote Procedure Call)機構やストリーム通信機構、さらにはHTTPエミューレーション等の通信機構が提供されてもよい。
 上述の実施形態では、メッセージングサーバ100と通知サーバ200とは物理的に異なるサーバとして示された。しかし、両者の違いは、各デバイス300との接続についてのバッファサイズの設定や取り扱い方から生じることから、物理的に異なるサーバ上で動作させる形態でなくとも、以下のような形態でも同様の効果が得られる。
(1)単一のサーバマシン上で通知サーバプロセスとメッセージングサーバプロセス双方を動作させる。
(2)単一のサーバマシン上で、通知サーバ機能とメッセージングサーバ機能を持った1つのサーバプロセスを動作させる(デバイス300との通信状況に応じて、通知サーバ相当の接続形態と、メッセージングサーバ相当の接続形態を切り替える)。
[その他]
 本技術は以下のような構成も採ることができる。
[1]
 第1の機器、第2の機器、並びに前記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、前記ネットワークを介して必要に応じて接続して通信可能な通信部と、
 前記第1の機器から、前記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを前記第2の機器へ送信するように要求する通知要求情報を前記常時接続サーバへ送信し、前記通知メッセージを受信した第2の機器からの要求に応じて、前記データを当該第2の機器へ送信するように、前記通信部を制御可能な制御部と
 を具備する情報処理装置。
[2]
 上記[1]に記載の情報処理装置であって、
 記憶部をさらに具備し、
 前記第2の機器は、通信中継装置を介して当該情報処理装置及び前記常時接続サーバと通信し、
 前記制御部は、
  前記通信中継装置が、当該情報処理装置からの通信を第2の機器へ転送するように設定されている場合には、当該転送設定に関する情報を記憶するように前記記憶部を制御し、
  前記記憶された情報を用いて、前記通知要求情報の送信に代えて、または、前記通知要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信するように前記通信部を制御する
 情報処理装置。
[3]
 上記[1]または[2]に記載の情報処理装置であって、
 前記制御部は、前記第2の機器にグローバルIPアドレスが割り当てられている場合には、前記通知要求情報の送信に代えて、または、前記通知要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信するように前記通信部を制御する
 情報処理装置。
[4]
 上記[1]~[3]のいずれかに記載の情報処理装置であって、
 当該情報処理装置及び前記常時接続サーバはそれぞれ複数存在し、
 前記第1の機器及び前記第2の機器は、それぞれ1つの前記情報処理装置及び前記常時接続サーバと通信するよう、当該第1の機器、前記第2の機器、前記複数の情報処理装置、前記複数の常時接続サーバをそれぞれ一意に識別する機器識別情報を用いて対応付けられており、
 前記制御部は、前記機器識別情報を基に、前記第2の機器が他の情報処理装置と対応付けられていると判断した場合には、前記データを当該他の情報処理装置へ転送するように前記通信部を制御する
 情報処理装置。
[5]
 上記[4]に記載の情報処理装置であって、
 記憶部をさらに具備し、
 前記制御部は、
  前記第1の機器及び前記第2の機器のそれぞれの機器識別情報を基に所定のハッシュ関数から得られるハッシュ値に基づいた値と、当該複数の情報処理装置のそれぞれの識別情報との対応関係を定めたテーブルを作成し、
  前記作成されたテーブルを記憶するように前記記憶部を制御し、
  前記記憶されたテーブルを基に、前記第2の機器に対応する他の情報処理装置を決定する
 情報処理装置。
[6]
 上記[5]に記載の情報処理装置であって、
 前記制御部は、前記第1の機器及び前記第2の機器にそれぞれを所有するユーザを一意に識別するユーザ識別情報が設定されている場合には、前記機器識別情報に代えて前記ユーザ識別情報を用いて前記テーブルを作成する
 情報処理装置。
 11、31…CPU
 12、32…ROM
 13、33…RAM
 18、38…記憶部
 19、39…通信部
 50…WAN
 100(100A,100B,100C)…メッセージングサーバ
 101…接続処理部
 102…接続管理部
 103…通知手段リスト
 104…接続情報リスト
 105…メッセージ処理部
 106…メッセージ送信部
 107…メッセージ転送部
 200(200A,200B,200C)…通知サーバ
 201…接続処理部
 202…接続管理部
 203…接続情報リスト
 300(300A,300B,300C)…デバイス
 301…通知手段設定部
 302…通知サーバ通知受信部
 303…直接通知受信部
 304…メッセージ受信部
 305…メッセージ送信部
 306…メッセージ処理部
 310(310A,310B)…通信中継装置

Claims (10)

  1.  第1の機器、第2の機器、並びに前記第2の機器とネットワークを介して常時接続される常時接続サーバとの間で、前記ネットワークを介して必要に応じて接続して通信可能な通信部と、
     前記第1の機器から、前記第2の機器宛のデータを受信し、当該データの存在を通知する通知メッセージを前記第2の機器へ送信するように要求する通知要求情報を前記常時接続サーバへ送信し、前記通知メッセージを受信した第2の機器からの要求に応じて、前記データを当該第2の機器へ送信するように、前記通信部を制御可能な制御部と
     を具備する情報処理装置。
  2.  請求項1に記載の情報処理装置であって、
     記憶部をさらに具備し、
     前記第2の機器は、通信中継装置を介して当該情報処理装置及び前記常時接続サーバと通信し、
     前記制御部は、
      前記通信中継装置が、当該情報処理装置からの通信を第2の機器へ転送するように設定されている場合には、当該転送設定に関する情報を記憶するように前記記憶部を制御し、
      前記記憶された情報を用いて、前記通知要求情報の送信に代えて、または、前記通知要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信するように前記通信部を制御する
     情報処理装置。
  3.  請求項1に記載の情報処理装置であって、
     前記制御部は、前記第2の機器にグローバルIPアドレスが割り当てられている場合には、前記通知要求情報の送信に代えて、または、前記通知要求情報の送信に加えて、前記通知メッセージを前記第2の機器へ直接送信するように前記通信部を制御する
     情報処理装置。
  4.  請求項1に記載の情報処理装置であって、
     当該情報処理装置及び前記常時接続サーバはそれぞれ複数存在し、
     前記第1の機器及び前記第2の機器は、それぞれ1つの前記情報処理装置及び前記常時接続サーバと通信するよう、当該第1の機器、前記第2の機器、前記複数の情報処理装置、前記複数の常時接続サーバをそれぞれ一意に識別する機器識別情報を用いて対応付けられており、
     前記制御部は、前記機器識別情報を基に、前記第2の機器が他の情報処理装置と対応付けられていると判断した場合には、前記データを当該他の情報処理装置へ転送するように前記通信部を制御する
     情報処理装置。
  5.  請求項4に記載の情報処理装置であって、
     記憶部をさらに具備し、
     前記制御部は、
      前記第1の機器及び前記第2の機器のそれぞれの機器識別情報を基に所定のハッシュ関数から得られるハッシュ値に基づいた値と、当該複数の情報処理装置のそれぞれの識別情報との対応関係を定めたテーブルを作成し、
      前記作成されたテーブルを記憶するように前記記憶部を制御し、
      前記記憶されたテーブルを基に、前記第2の機器に対応する他の情報処理装置を決定する
     情報処理装置。
  6.  請求項5に記載の情報処理装置であって、
     前記制御部は、前記第1の機器及び前記第2の機器にそれぞれを所有するユーザを一意に識別するユーザ識別情報が設定されている場合には、前記機器識別情報に代えて前記ユーザ識別情報を用いて前記テーブルを作成する
     情報処理装置。
  7.  第1の機器及び第2の機器とネットワークを介して常時接続して通信可能であり、前記第1の機器と前記第2の機器との間のデータの送受信を前記ネットワーク上で仲介する仲介サーバと必要に応じて接続して通信可能な通信部と、
     前記第1の機器から送信された前記第2の機器宛のデータが前記仲介サーバにより受信された場合に、当該仲介サーバから、当該データの存在を通知する通知メッセージを前記第2の機器へ送信するように要求する通知要求情報を受信し、当該通知要求情報に基づいて、前記通知メッセージを前記第2の機器へ送信するように、前記通信部を制御可能な制御部と
     を具備する情報処理装置。
  8.  ネットワーク上の第1のサーバと必要に応じて接続して通信可能であり、前記ネットワーク上の第2のサーバと常時接続して通信可能な通信部と、
     他の情報処理装置から送信されたデータの存在を通知する通知メッセージを前記第2のサーバから受信し、当該受信された通知メッセージを基に、前記データを前記第1のサーバから受信するように前記通信部を制御可能な制御部と
     を具備する情報処理装置。
  9.  第1の機器とネットワークを介して接続を確立して当該第1の機器から第2の機器宛のデータを受信し、
     前記データの存在を通知する通知メッセージを当該第2の機器へ送信するように要求する通知要求情報を、前記第2の機器と常時接続されたサーバへ送信し、
     前記通知メッセージを受信した前記第2の機器からの要求に応じて接続を確立して当該第2の機器へ前記データを送信する
     情報処理方法。
  10.  情報処理装置に、
     第1の機器とネットワークを介して接続を確立して当該第1の機器から第2の機器宛のデータを受信するステップと、
     前記データの存在を通知する通知メッセージを当該第2の機器へ送信するように要求する通知要求情報を、前記第2の機器と常時接続された常時接続サーバへ送信するステップと、
     前記通知メッセージを受信した前記第2の機器からの要求に応じて当該第2の機器と接続を確立して当該第2の機器へ前記データを送信するステップと
     を実行させるプログラム。
PCT/JP2012/007588 2012-02-13 2012-11-27 情報処理装置、情報処理方法及びプログラム WO2013121487A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201280069142.2A CN104094243B (zh) 2012-02-13 2012-11-27 信息处理装置和信息处理方法
US14/373,968 US20140365606A1 (en) 2012-02-13 2012-11-27 Information processing apparatus, information processing method, and program
JP2013558589A JP5962676B2 (ja) 2012-02-13 2012-11-27 情報処理装置、情報処理方法及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012-028074 2012-02-13
JP2012028074 2012-02-13

Publications (1)

Publication Number Publication Date
WO2013121487A1 true WO2013121487A1 (ja) 2013-08-22

Family

ID=48983657

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/007588 WO2013121487A1 (ja) 2012-02-13 2012-11-27 情報処理装置、情報処理方法及びプログラム

Country Status (4)

Country Link
US (1) US20140365606A1 (ja)
JP (1) JP5962676B2 (ja)
CN (1) CN104094243B (ja)
WO (1) WO2013121487A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015072582A1 (en) * 2013-11-18 2015-05-21 Ricoh Company, Limited Control system, communication system, computer program, controlling method, and computer program product
JP2015103123A (ja) * 2013-11-27 2015-06-04 シャープ株式会社 ネットワークシステム、通信方法、電子機器、アプリケーションサーバ、プログラム
JP2015133048A (ja) * 2014-01-15 2015-07-23 シャープ株式会社 ネットワークシステム、常時接続方法、サーバ、電子機器、プログラム
JP2015162034A (ja) * 2014-02-27 2015-09-07 コニカミノルタ株式会社 画像形成システム、中継サーバー、通信制御方法及びプログラム
JP2021069098A (ja) * 2019-10-28 2021-04-30 株式会社バッファロー ルータ、制御プログラム、端末装置、通信システム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160061681A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 메시지 전송 시스템, 메시지 전송 서버, 사용자 단말 장치, 메시지 전송 방법 및 메시지 수신 방법
CN112752353B (zh) * 2019-10-31 2022-06-10 中移物联网有限公司 一种连接方法及终端设备
CN113285971B (zh) * 2021-02-23 2022-11-18 江苏未来智慧信息科技有限公司 针对工具柜的数据输送平台和输送方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002344529A (ja) * 2001-05-21 2002-11-29 Sharp Corp プッシュ型サービスシステム
JP2007233680A (ja) * 2006-03-01 2007-09-13 Matsushita Electric Works Ltd 防犯システム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6965917B1 (en) * 1999-09-07 2005-11-15 Comverse Ltd. System and method for notification of an event
US6498835B1 (en) * 2000-02-29 2002-12-24 Ameritech Corporation Method and system for providing visual notification in a unified messaging system
US7499973B2 (en) * 2001-12-21 2009-03-03 Motorola, Inc. System and method for automatically forwarding a communication message
US7899932B2 (en) * 2003-01-15 2011-03-01 Panasonic Corporation Relayed network address translator (NAT) traversal
JP4648906B2 (ja) * 2004-08-31 2011-03-09 一博 椎名 通話を伴うプッシュ型情報通信システム
CN100533415C (zh) * 2005-05-11 2009-08-26 索尼株式会社 服务器设备、用于其的器件间连接方法
US7853245B2 (en) * 2005-11-08 2010-12-14 Research In Motion Limited System and methods for wireless messaging
US8924489B2 (en) * 2011-01-05 2014-12-30 Apple Inc. Message push notification client improvements for multi-user devices
US20120331526A1 (en) * 2011-06-22 2012-12-27 TerraWi, Inc. Multi-level, hash-based device integrity checks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002344529A (ja) * 2001-05-21 2002-11-29 Sharp Corp プッシュ型サービスシステム
JP2007233680A (ja) * 2006-03-01 2007-09-13 Matsushita Electric Works Ltd 防犯システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TAKAYUKI KANDO ET AL.: "Platform for Tool as a Service : To serve development tools via cloud service", IEICE TECHNICAL REPORT, vol. 111, no. 328, 22 November 2011 (2011-11-22), pages 27 - 32 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015072582A1 (en) * 2013-11-18 2015-05-21 Ricoh Company, Limited Control system, communication system, computer program, controlling method, and computer program product
CN105745632A (zh) * 2013-11-18 2016-07-06 株式会社理光 控制系统、通信系统、计算机程序、控制方法和计算机程序产品
EP3072053A4 (en) * 2013-11-18 2016-11-30 Ricoh Co Ltd CONTROL SYSTEM, COMMUNICATION SYSTEM, COMPUTER PROGRAM, CONTROL METHOD, AND COMPUTER PROGRAM PRODUCT
US10122768B2 (en) 2013-11-18 2018-11-06 Ricoh Company, Limited Control system, communication system, computer program, controlling method, and computer program product
JP2015103123A (ja) * 2013-11-27 2015-06-04 シャープ株式会社 ネットワークシステム、通信方法、電子機器、アプリケーションサーバ、プログラム
JP2015133048A (ja) * 2014-01-15 2015-07-23 シャープ株式会社 ネットワークシステム、常時接続方法、サーバ、電子機器、プログラム
JP2015162034A (ja) * 2014-02-27 2015-09-07 コニカミノルタ株式会社 画像形成システム、中継サーバー、通信制御方法及びプログラム
JP2021069098A (ja) * 2019-10-28 2021-04-30 株式会社バッファロー ルータ、制御プログラム、端末装置、通信システム
JP7311780B2 (ja) 2019-10-28 2023-07-20 株式会社バッファロー ルータ、制御プログラム、端末装置、通信システム

Also Published As

Publication number Publication date
CN104094243A (zh) 2014-10-08
JP5962676B2 (ja) 2016-08-03
CN104094243B (zh) 2017-03-08
JPWO2013121487A1 (ja) 2015-05-11
US20140365606A1 (en) 2014-12-11

Similar Documents

Publication Publication Date Title
JP5962676B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP6785376B2 (ja) IoTデバイスコネクティビティ、ディスカバリ、ネットワーキング
US8499083B2 (en) Relay device and communication system
JP5888405B2 (ja) 情報処理装置、情報処理方法及びプログラム
US9515927B2 (en) System and method for layer 3 proxy routing
JP2008181427A (ja) シングルサインオンシステム、情報端末装置、シングルサインオンサーバ、プログラム
US20130091264A1 (en) Dynamic session migration between network security gateways
JP2008225644A (ja) ゲートウェイ装置、ゲートウェイ装置の負荷分散方法及びゲートウェイ装置の負荷分散プログラム
JP5880688B2 (ja) 情報処理装置、情報処理システム、情報処理方法及びプログラム
JP6193155B2 (ja) 通信装置、通信システム、通信方法およびプログラム
JP4683345B2 (ja) ネットワーク負荷分散装置、ネットワーク負荷分散方法及びプログラム
JP2008236278A (ja) 通信接続方法及び通信装置
US20110276673A1 (en) Virtually extending the functionality of a network device
WO2011117959A1 (ja) 通信装置、通信装置の制御方法、プログラム
JP2012165269A (ja) 中継サーバ及び中継通信システム
JP2013126219A (ja) 転送サーバおよび転送プログラム
US20230143067A1 (en) Cross-LAN Communication and Group Member Contact Synchronization
WO2024024280A1 (ja) 通信処理装置および通信方法
JP2010081109A (ja) 通信システム、管理装置、中継装置、及びプログラム
JP2017017587A (ja) ルータ装置、接続確立方法、通信システム、通信端末
JP2017153042A (ja) 通信システム、及びパケット転送方法
JP4622754B2 (ja) 通信システム、通信方法、送信装置、送信方法、受信装置、受信方法、およびプログラム
JP2015109637A (ja) データ通信システム、それに用いられる転送装置および中継装置、並びにプログラム
JP2014165560A (ja) サーバおよびプログラム
US20180248958A1 (en) Sharing local network resources with a remote vdi instance

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12868491

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013558589

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14373968

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12868491

Country of ref document: EP

Kind code of ref document: A1