Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

A reception apparatus which receives a first and second message includes
a determination unit configured to determine correspondence between the
first message and the second message, an acquisition unit configured to
acquire data length information expressing a data length from the first
message, and an extraction unit configured to extract data which has the
data length based on the data length information from the second message
when the determination unit determines that the first message corresponds
to the second message.

Claims:

1. A transmission apparatus which transmits a first and a second message,
the transmission apparatus comprising: a generation unit configured to
generate the first message so that the first message includes data length
information on a data length of part data of the second message
corresponding to the first message; and a transmission unit configured to
transmit the first and the second messages.

2. The transmission apparatus according to claim 1, wherein the first
message includes identification information on a corresponding second
message, and the identification information indicates that the first
message corresponds to the second message.

3. The transmission apparatus according to claim 1, wherein the first
message includes identification information on the part data of the
second message and the information on the data length of the part data of
the second message.

4. The transmission apparatus according to claim 1, wherein the
transmission unit is configured to transmit the second message after a
reception confirmation of the first message is received.

5. The transmission apparatus according to claim 1, wherein the
transmission unit is configured to retransmit the first message in a case
where the reception confirmation of the first message is not received
after a predetermined time period has elapsed since the first message is
transmitted.

6. A method for transmitting a first and a second message, the method
comprising: generating the first message so that the first message
includes data length information on a data length of part data of the
second message corresponding to the first message; and transmitting the
first and the second messages.

7. A non-transitory computer-readable storage medium storing a control
program, which when loaded into a computer and executed performs a method
for transmitting a first and a second message, the method comprising:
generating the first message so that the first message includes data
length information on a data length of part data of the second message
corresponding to the first message; and transmitting the first and the
second messages.

8. A method for processing a message by a transmission apparatus which
transmits a first and second message and a reception apparatus which
receives the first and second message, the method comprising: causing the
transmission apparatus to generate the first message so that the first
message includes data length information on a data length of part data of
the second message corresponding to the first message; causing the
transmission apparatus to transmit the first and second messages; causing
the reception apparatus to receive the first and second messages; causing
the reception apparatus to determine whether the first message
corresponds to the second message; causing the reception apparatus to
acquire the data length information from the first message; and causing
the reception apparatus to detect a boundary position of the part data of
the second message from the second message determined to correspond to
the first message based on data length information.

Description:

CROSS REFERENCE OF RELATED APPLICATIONS

[0001] This application is a Continuation of U.S. patent application Ser.
No. 12/572, 863 filed on Oct. 2, 2009 which claims the benefit of
Japanese Patent Application No. 2008-259676, filed Oct. 6, 2008, hereby
incorporated by reference herein in its entirety.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention relates to a transmission apparatus and
reception apparatus for messages and to a method of data extraction
performed by the reception apparatus.

[0004] 2. Description of the Related Art

[0005] Conventionally, when electronic emails or messages using Simple
Object Access Protocol (SOAP) are sent or received, a file or files are
often attached to the main message. Multipurpose Internet Mail Extension
(MIME/Multipart) is widely employed as a format for file attachment.
MIME/Multipart packages a plurality of parts into a single multipart
message using boundary character strings to separate the main message and
attached files.

[0006] In Japanese Patent Application Laid-Open No. 2008-109381, a main
mail part and an attached file part are separated by boundary character
strings detected within the multipart message.

[0007] However, an operation for extracting data included in multipart
messages may largely increase a processing load.

[0008] In other words, extracting data from a certain part of a multipart
message in the MIME/Multipart format requires reading data in sequence
from the beginning of the multipart message and comparing the read data
with the boundary character strings. As a result, in particular when
large capacity data is attached, the processing load on a receiver is
greatly increased.

[0009] The present invention is related to reducing a processing load in
extracting data included in a multipart message.

SUMMARY OF THE INVENTION

[0010] According to an aspect of the present invention, a reception
apparatus which receives a first and second message includes a
determination unit configured to determine correspondence between the
first message and the second message, an acquisition unit configured to
acquire data length information expressing a data length from the first
message, and an extraction unit configured to extract data which has the
data length based on the data length information from the second message
when the determination unit determines that the first message corresponds
to the second message.

[0011] Further features and aspects of the present invention will become
apparent from the following detailed description of exemplary embodiments
with reference to the attached drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The accompanying drawings, which are incorporated in and constitute
a part of the specification, illustrate exemplary embodiments, features,
and aspects of the invention and, together with the description, serve to
explain the principles of the invention.

[0013]FIG. 1 is a network configuration example according to an exemplary
embodiment of the present invention.

[0014]FIG. 2 illustrates a hardware configuration example of a
transmission apparatus and a reception apparatus.

[0017]FIG. 5 is a flowchart illustrating processing for receiving a
message by a reception apparatus.

DESCRIPTION OF THE EMBODIMENTS

[0018] Various exemplary embodiments, features, and aspects of the
invention will be described in detail below with reference to the
drawings.

[0019]FIG. 1 is a block diagram illustrating a network configuration
example according to an exemplary embodiment. Although both of
communication apparatuses 101 and 102 in FIG. 1 have equivalent
functions, the present exemplary embodiment will describe a case where a
message is transmitted from a transmission apparatus 101 to a reception
apparatus 102. The transmission apparatus 101 and the reception apparatus
102 are interconnected by a network 110.

[0020] A hardware configuration of the transmission apparatus 101 and the
reception apparatus 102 will be described with reference to FIG. 2. As
described above, the transmission apparatus 101 and the reception
apparatus 102 in the present exemplary embodiment are communication
apparatuses having equivalent functions. However the transmission
apparatus 101 may be a dedicated apparatus for sending messages and the
reception apparatus may be a dedicated apparatus for receiving messages.
Further, the transmission apparatus 101 and the reception apparatus 102
may be configured by devices which can perform message communication,
such as personal computers (PCs), work stations, laptop PCs, and various
types of domestic electrical devices with built-in computers, game
hardware, mobile telephones, digital video cameras, and digital cameras.

[0021]FIG. 2 is a block diagram illustrating a hardware configuration
example of the transmission apparatus 101 and the reception apparatus
102. The transmission apparatus 101 and the reception apparatus 102 are
respectively provided with a control unit 201, an input unit 202, an
output unit 203, a communication control unit 204 and a storage unit 205.

[0022] In FIG. 2, the control unit 201 includes a central processing unit
(CPU), a read only memory (ROM), a random access memory (RAM) and
peripheral equipment and performs overall control of the apparatus. The
input unit 202 includes an interface for connecting a keyboard, a mouse
or the like and controls various inputs and commands to the own
apparatus.

[0023] The output unit 203 includes an interface for connecting a display
or the like and controls outputs such as processing results or the
operating state of the own apparatus. The communication control unit 204
includes an interface for communicating with a network and controls
communication with other communication apparatuses via a network 110.

[0024] The storage unit 205 includes an interface for controlling access
to a large capacity storage device. Each of the above units is connected
by a system bus 210.

[0025] A flow of transmission and reception processing of a multipart
message performed between the transmission apparatus 101 and the
reception apparatus 102 will be described with reference to FIG. 3. A
multipart message is composed of a plurality of parts including a main
message part and one or more attached-file parts.

[0026] A message including a plurality of parts can be sent and received
as a single multipart message by separating the main message and the
attached files using boundary character strings. An example of a message
sent and received as a multipart message is an email or a SOAP message.

[0027]FIG. 3 illustrates a schematic sequence when a multipart message
from the transmission apparatus 101 to the reception apparatus 102 is
sent and received.

[0028] In step S301, the transmission apparatus 101 sends message
information (first message) including MessageId, ContentId and a data
length of each part via the communication control unit 204 to the
reception apparatus 102.

[0029] The MessageID is identification information (MessageID) of the
multipart message (second message) to be sent. The ContentID is
identification information (ContentID) of each part included in the
second message which is the multipart message. The data length is
information regarding the data length of each part of the second message.
The MessageID is a character string individually assigned to the
multipart message. The ContentID is the character string individually
assigned respectively to contents of each part sent in the multipart
message.

[0030] In other words, the message information includes the identification
information (MessageID) for the multipart message to be sent, the
identification information (ContentID) for each part included in the
multipart message, and the information about the data length of each
part.

[0031] An Action value is sent for each SOAP message via a transport
protocol. The reception apparatus 102 uses the Action value in a received
message to determine whether the received message is the message
information (first message).

[0032] In step S301, the reception apparatus 102, after receipt of the
message information (first message) via the communication control unit
204, stores each data included in the message in the RAM included in the
control unit 201.

[0033] In step S302, the reception apparatus 102 sends a reception
confirmation of the message information to the transmission apparatus 101
via the communication control unit 204 and processing proceeds to step
S303.

[0034] In step S303, the transmission apparatus 101 sends the multipart
message (second message) which has the same MessageID as the message
information sent in step S301 to the reception apparatus 102 via the
communication control unit 204.

[0035] Thus the transmission apparatus 101 in the present exemplary
embodiment sends the multipart message after receipt of the reception
confirmation of the message information. In this manner, it can be
prevented that the reception apparatus 102 is hindered from extracting
parts using the message information due to receiving the multipart
message before completing reception processing of the message
information.

[0036] The transmission apparatus 101 in the present exemplary embodiment
resends the message information (first message) when the reception
confirmation of the message information is not received after a fixed
time period has elapsed from sending the message information. In this
manner, resent message information can be acquired when the reception
apparatus 102 cannot receive the message information in a normal manner
due to some reason. However the multipart message may be sent without
resending the message information.

[0037] In step S303, when the reception apparatus 102 has received the
multipart message, the reception apparatus 102 determines whether data
for the message information corresponding to the received multipart
message is stored. When the data for the message information
corresponding to the multipart message is stored, a data length value for
each part is read out. In other words, in step S303, the reception
apparatus 102 searches the RAM for a MessageID which is the same as the
MessageID included in the received multipart message. When the MessageID
is included in the RAM, a data length for each part which is correlated
with the MessageID and stored is read out.

[0038]FIG. 4 is a diagram of an example of message information and a
multipart message. The multipart message sent in the present exemplary
embodiment is a SOAP message. Generally SOAP messages are communicated
using Hypertext Transfer Protocol (HTTP) as a transport protocol. However
the present invention can be applied to transmission using Simple Mail
Transfer Protocol (SMTP) or other protocols.

[0039]FIG. 4 illustrates an example of message information 401 sent in
step S301 and an example of a multipart message 402 sent in step S303.

[0040] As shown in FIG. 4, the MessageID included in <soap:Body>
(SOAP body) in the message information 401 is the same character string
as the MessageID included in a header of the multipart message 402. This
fact demonstrates that the message information 401 corresponds to the
multipart message 402. In other words, the message information 401
illustrated in FIG. 4 shows that it is message information in which the
data length of each part of the multipart message 402 is enumerated.

[0041] A parts element following the MessageId element of the message
information can include a plurality of part elements. A ContentId of the
part corresponding to the multipart message 402 is included in a
contentId element described as a child element of each part element.

[0042] Respective data lengths of the parts corresponding to the multipart
message 402 are described in length elements which are child elements of
each ContentID. In other words, one part element described in the message
information 401 corresponds to one part in the multipart message 402. The
data length of the part corresponding to the multipart message 402 is
described in the length element included in the part element.

[0043] In the present exemplary embodiment, a ContentId
(attachment1@canon.com) of a first attached file in the multipart message
402 is described in the message information 401 as shown by an arrow 411.
A ContentId (attachment2@canon.com) of a second attached file in the
multipart message 402 is described in the message information 401 as
shown by an arrow 412.

[0044] Although the data length included in the message information 401 is
a data length of the attached file included in the multipart message 402,
the data length of the header (ContentID and the like in FIG. 4) of the
attached file is not included.

[0045] Next, processing performed by the reception apparatus 102 when
receiving the message information and the multipart message will be
described in detail with reference to FIG. 5.

[0046] The reception apparatus 102 receives the message information (first
message) and the multipart message (second message). Further, the
reception apparatus 102 in the present exemplary embodiment performs each
processing described with reference to FIG. 5 based on a stored program.
In other words, the control unit 101 of the reception apparatus 102 reads
a suitable program related to the present invention which is stored in
the storage unit 205 and executes the processing. As described above, the
control unit 101 of the reception apparatus 102 includes the CPU, ROM and
RAM.

[0047]FIG. 5 is a flowchart illustrating the detailed processing for
receiving a message by the reception apparatus 102.

[0048] When the reception apparatus 102 receives a message in step S501,
the processing proceeds to step S502.

[0049] In step S502, the control unit 201 of the reception apparatus 102
determines whether the Action value included in the received message
coincides with an Action value of the message information in which the
data lengths are enumerated. The Action value corresponding to the
message information is predetermined.

[0050] In step S502, when the Action value of the received message
coincides with the Action value of the message information, the control
unit 201 determines that it is the message information 401 (YES in step
S502), and the processing proceeds to step S503. When the Action value of
the received message does not coincide with the Action value of the
message information, the control unit 201 determines that it is not the
message information (NO in step S502), and the processing proceeds to
step S505. In other words, in step S502, the control unit 201 determines
whether the message received in step S501 is the message information.

[0051] In step S503, the control unit 201 reads a body of the message
information, stores the MessageId acquired from the body, and the
processing proceeds to step S504. As described above, the control unit
201 includes the CPU, RAM and ROM.

[0052] In step S504 (acquisition sequence), the control unit 201 reads the
body of the message information, forms a set of a value of the ContentId
acquired from the body and the corresponding data length value, stores
the set by correlating with the MessageId, and completes the reception
processing.

[0053] In other words, in step S504, the control unit 201 acquires data
length information expressing the data length from the message
information (first message).

[0054] Consequently, when the processing in step S504 is completed, the
MessageID, the ContentID of each part included in the message and the
data length of each part are correlated and stored in the control unit
201 of the reception apparatus 102.

[0055] As illustrated in the example in FIG. 4, when a plurality of parts
is present in the multipart message 402, a ContentID is added to each
part. In other words, the multipart message (second message) includes
apart (first data) indicated by the ContentID attachment1@canon.com and
apart (second data) indicated by attachment1@canon.com.

[0056] Upon receipt of the message information, in step S504, the control
unit 201 acquires information about a first data length (102400) and
ContentID of the first data and information for a second data length
(204800) and ContentID for the second data.

[0057] In other words, in step S504, the control unit 201 acquires from
the message information the first data length information including the
identification information (ContentID) of the first data and the second
data length information including the identification information
(ContentID) of the second data which are included in the multipart
message.

[0058] In step S502, when the Action value is different from the Action
value which is previously recorded in the message information, in step
S505, the control unit 201 determines whether the sent message is a
multipart message. When the sent message is not the multipart message (NO
in step S505), in step S506, the control unit 201 processes the message
is processed and finishes the processing. The information included in the
header of the sent massage is used to determine whether the sent message
is the multipart message.

[0059] Conversely, in step S505, when it is determined that the sent
message is the multipart message (YES in step S505), the processing
proceeds to step S507.

[0060] In step S507 (determination sequence), the control unit 201 of the
reception apparatus 102 checks whether the MessageId of the multipart
message is stored in the control unit 201 of the reception apparatus 102.
When the message information corresponding to the multipart message has
already been received, the MessageID is stored in the control unit 201.

[0061] In other words, in step S507, the control unit 201 of the reception
apparatus 102 determines whether the message information (first message)
corresponds to the multipart message (second message).

[0062] The control unit 201 determines whether the message information
corresponds to the multipart message based on the identification
information (MessageID). When the MessageId of the multipart message sent
to the reception apparatus 102 is not stored (NO in step S507), the
processing proceeds to step S508.

[0063] In step S508, the control unit 201 of the reception apparatus 102
performs normal processing for identifying delimiters of the parts in the
MIME-Multipart. In other words, the control unit 201 reads in sequence
from the beginning of the multipart message, compares the read data with
the boundary character string, and identifies those positions at which
the boundary character strings are present as the delimiters of parts.
Then, the processing proceeds to step S509.

[0064] Conversely, in step S507, when the MessageId is determined to be
stored in the control unit 201 of the reception apparatus 102 (YES in
step S507), the processing proceeds to step S510.

[0065] In step S510, the control unit 201 extracts the set of the data
length value and the ContentId which is correlated with the MessageId and
acquires the data length from the ContentId described in the header of
each part of the MIME-Multipart. The control unit 201 reads in sequence
from the beginning of the multipart message.

[0066] As a result, when the ContentID stored in step S504 is detected,
the control unit 201 counts a read-out byte number without comparing with
the boundary character strings after the header of the ContentID. A
position at which a count number coincides with the acquired data length
is identified as the delimiter of the part. The processing then proceeds
to step S509. A check may be performed of whether the boundary character
string is present at the position of coincidence between the count number
and the acquired data length.

[0067] In the present exemplary embodiment, the control unit 201 detects a
character string to identify a start position of apart attached to the
main body of the message. In other words, the control unit 201 reads the
character string from the beginning of the message and detects the
character string (boundary character string) indicating the start of the
attached part. Then the separation of that part is specified using the
above information regarding the data length from the detected character
string.

[0068] In step S504, when a plurality of pieces of the data length
information is acquired, the control unit 201 identifies the respective
delimiters of the plurality of parts based on the plurality of pieces of
the data length information. In 5510, the control unit 201 identifies the
delimiter of the part and the processing proceeds to step S509.

[0069] In step S509 (extraction sequence), the control unit 201 extracts
each part of the multipart message based on the delimiter of the parts
identified in step S508 or step S510. In other words, for example, when
the data length information is acquired from the message information in
step S510, the data (part) having the data length is extracted based on
the information.

[0070] Thus, in step S509, the control unit 201 extracts the data having
the data length based on the data length information from the multipart
message (second message) which is determined to correspond to the message
information (first message).

[0071] In step S504, when a plurality of pieces of the data length
information is acquired, the data for the plurality of parts is extracted
based on the plurality of pieces of the data length information.

[0072] In other words, the control unit 201 extracts the first data
included in the multipart message based on the first data length
information and extracts the second data included in the multipart
message based on the second data length information.

[0073] In step S508, when the separation of the part is identified by
detecting the boundary character string, each part is extracted based on
the detection result. After extracting each part, in step s509, the
control unit 201 executes processing corresponding to part data and
finishes the message reception processing. Processing corresponding to
the part data includes, for example, displaying, reproducing, and
recording of the part data.

[0074] As described above, the reception apparatus 102 of the present
exemplary embodiment switches the processing for extracting each part
according to whether the message information corresponding to the
received multipart message is stored.

[0075] In other words, when the message information corresponding to the
multipart message is stored, each part is extracted using the value
described in the length (data length) of each part element included in
the message information. On the other hand, when the message information
corresponding to the multipart message is not stored, the data in the
received message is read in sequence and each part is extracted based on
the delimiter of each part identified by a comparison with the boundary
character string indicating the separation of each part.

[0076] In this manner, the reception apparatus 102 can extract data of
each part by searching for boundaries when a multipart message is
received from a transmission apparatus which has not sent message
information in which data lengths are enumerated in advance. Conversely,
when a multipart message is received from a transmission apparatus which
sends message information in which data lengths are enumerated in
advance, the reception apparatus 102 can extract data of each part by
simply counting a byte number without searching for boundaries. Thus data
of each part can be extracted from a multipart message more rapidly
without impeding mutual interconnectedness.

[0077] Aspects of the present invention can also be realized by a computer
of a system or apparatus (or devices such as a CPU or a micro processing
unit (MPU)) that reads out and executes a program recorded on a memory
device to perform the functions of the above-described embodiments, and
by a method, the steps of which are performed by a computer of a system
or apparatus by, for example, reading out and executing a program
recorded on a memory device to perform the functions of the
above-described embodiments. For this purpose, the program is provided to
the computer for example via a network or from a recording medium of
various types serving as the memory device (e.g., computer-readable
medium). In such a case, the system or apparatus, and the recording
medium where the program is stored, are included as being within the
scope of the present invention.

[0078] While the present invention has been described with reference to
exemplary embodiments, it is to be understood that the invention is not
limited to the disclosed exemplary embodiments. The scope of the
following claims is to be accorded the broadest interpretation so as to
encompass all such modifications and equivalent structures and functions.