Patent Publication Number: US-8112533-B2

Title: Data transmission device

Description:
CROSS REFERENCE TO RELATED APPLICATION 
     This application claims priority from Japanese Patent Application No. 2008-039506, filed on Feb. 21, 2008, the entire subject matter of which is incorporated herein by reference. 
     BACKGROUND 
     1. Technical Field 
     Aspects of the present invention relate to a data transmission device, which is capable of transmitting data to an external device. 
     2. Related Art 
     Devices capable of transmitting data to external devices through a network have been used. For example, Japanese Patent Provisional Publication No. 2006-60499 discloses a scanner device capable of transmitting data, which is generated based on a scanned image, to another device in a network. As a consequence of development of data transmission devices, techniques to enable fast data transmission have been appreciated. 
     SUMMARY 
     A data file including data created by the data transmission device such as the scanner device, representing the images formed on an original document, may be in a large volume, specifically when the original document is in a large volume, and transmission of such data may require longer runtime when the data file is transmitted from the data transmission device to an external device serially through a single communication session. Although a data transmission device, which is capable of establishing a plurality of communication sessions with an external device concurrently, has been known, such a data transmission device transmits a plurality of data files through the plurality of communication sessions, but does not transmit a single data file through the plurality of communication sessions to reduce transmission runtime. 
     In view of the above drawbacks, the present invention is advantageous in that a data transmission device, which is capable of transmitting a data file to an external device in a shorter runtime, is provided. 
     According to an aspect of the invention, a data transmission device to transmit a data file to an external device is provided. The data transmission device includes a data file storing unit to store a data file to be transmitted, a communication session establishing unit, which is capable of establishing a plurality of communication sessions between the data transmission device and the external device, a data transmitting unit to transmit data included in the data file and divided in portions concurrently through the plurality of communication sessions to the external device. 
     According to another aspect of the invention, a computer usable medium including computer readable instructions to control a computer to transmit a data file to an external device is provided. The computer is controlled to execute steps of storing a data file to be transmitted, establishing a plurality of communication sessions between the data transmission device and the external device, and transmitting data included in the data file and divided in portions concurrently through the plurality of communication sessions to the external device. 
     According to still another aspect of the invention, a method to control a computer to transmit a data file to an external device is provided. The method includes storing a data file to be transmitted, establishing a first communication session to transmit the data file between the computer and the external device, examining as to whether a second communication session is available between the computer and the external device while the data file is being transmitted, dividing remaining data in the data file, which has not yet been transmitted in the first communication session, into pieces so that each data piece is transmitted through the first and the second communication sessions respectively between the computer and the external device when it is determined that the second communication session is available, and transmitting each data piece to the external device through the first and the second communication sessions respectively. 
     According to the above configurations, a single data files can be transmitted to the external device through the plurality of communication sessions concurrently; therefore, transmission of a data file can be completed within a shorter runtime than data transmission through a single communication session. 
    
    
     
       BRIEF DESCRIPTION OF THE ACCOMPANYING DRAWINGS 
         FIG. 1  is a block diagram to illustrate a scanner system according to an embodiment of the present invention. 
         FIG. 2  illustrates a data structure in a destination URL storage area in a scanner device according to the embodiment of the present invention. 
         FIG. 3  illustrates a data structure in a scanned-data storage area in the scanner device according to the embodiment of the present invention. 
         FIG. 4  illustrates a data structure in a transmission management data storage area in the scanner device according to the embodiment of the present invention. 
         FIG. 5  is a flowchart to illustrate a part of a scanning process to be executed in the scanner device according to the embodiment of the present invention. 
         FIG. 6  is a flowchart to illustrate a part of the scanning process to be executed in the scanner device according to the embodiment of the present invention. 
         FIG. 7  is a flowchart to illustrate a part of the scanning process to be executed in the scanner device according to the embodiment of the present invention. 
         FIG. 8  is a flowchart to illustrate a data transmission task to be performed in the scanner device according to the embodiment of the present invention. 
         FIG. 9  illustrates contents of the transmission management data being created and updated in the scanning process in the scanner device according to the embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     Hereinafter, an embodiment according to an aspect of the present invention will be described with reference to the accompanying drawings. 
       FIG. 1  is a block diagram to illustrate a scanner system  2  according to the embodiment of the present invention. The scanner system  2  includes a scanner device  10  and a PC (personal computer)  40 . Although solely one PC  40  is shown in  FIG. 2  for simplicity in explanation, the scanner system  2  may include more than one PCs  40 . The scanner device  10  and the PC  40  are connected with each other through a communication line  36 , which is for example a LAN and the Internet. 
     The scanner device  10  is equipped with an operation unit  12 , a display unit  14 , a scanner unit  16 , an original sheet tray  18 , a control unit  20 , a storage unit  22 , and a network interface  32 . The operation unit  12  includes a plurality of operation keys (not shown), which are operated by a user to enter various information and instructions to manipulate the scanner device  10 . The scanner unit  16  scans an original sheet (not shown) placed on the original sheet tray  18  to read and generates scanned data representing the scanned image. The control unit  20  controls various operations of the scanner device  10  according to programs (not shown) stored in the storage unit  22  and instructions entered by the user. The control unit  20  includes a CPU (not shown) being a processor of various information. The operations to be controlled by the control unit  20  will be described later in detail. 
     The storage unit  22  includes a ROM, an EEPROM, and ROM (not shown). The storage unit  22  is provided with a destination URL storage area  24 , a scanned-data storage area  26 , a transmission management data storage area  28 , and a miscellaneous storage area  30 . 
     The destination URL storage area  24  is a storage area to store information to identify destination devices to which the scanned data is transmitted.  FIG. 2  illustrates a data structure in the destination URL storage area  24  in the scanner device  10  according to the embodiment of the present invention. In the destination URL storage area  24 , a plurality of data sets  70 ,  72  can be stored. Each of the data sets includes a name  60  of the data and a URL  62  of common folder. The name  60  identifies a destination device. The name  60  may represent, for example, a name of the user of the destination device. The URL  62  of common folder identifies a URL (uniform resource locator) of a shared folder in the destination device and can be accessed by external devices such as the scanner device  10 . When the destination device is provided with a common folder, data stored in the common folder can be accessed by the external devices, and new data in the external devices can be stored in the common folder. The URL  62  of the common folder in the present embodiment includes an IP address of the destination device (i.e., the PC  40 ) in which the common folder is provided. More specifically, it is to be noted that the URL  62  of the common folder in the data set  70  (i.e., 192.168.0.2/common) includes an IP address “192.168.0.2” of the destination device. In the present embodiment, a character string such as “file://” which is generally to be included in a URL is omitted in the URL  62  of the common folder. 
     The data sets  70 ,  72  to identify the destination devices can be entered by the user through the operation unit  12  and stored in the destination URL storage area  24 . The user may further enter the data sets  70 ,  72  in an external device, which is a device other than the scanner device  10 , so that the external device can pass the data sets  70 ,  72  to the scanner device  10 . The scanner device  10  stores the received the data sets  70 ,  72  in the destination URL storage area  24 . 
     The scanned-data storage area  26  is a storage area to store the scanned data created in the scanner unit  16 .  FIG. 3  illustrates a data structure in the scanned-data storage area  26  in the scanner device  10  according to the embodiment of the present invention. In the present embodiment, the scanner device  10  has a hostname  26   a  (mfp1.example.com). The scanned-data storage area  26  can store a plurality of scanned-data files  80 ,  90 . The scanned-data file  80  includes a piece of scanned data  84 , and a file name  82  (i.e., 20080101-010100), which represents a date of creation of the scanned-data file  80 . In the present embodiment, the file name  82  (20080101-010100) indicates that the scanned-data file  80  was created on 1:01:00 (1 minute and 0 second past 1 o&#39;clock), Jan. 1, 2008. The file name  82  further includes a character string (.pdf), which indicates an extension of the scanned-data file  84 . The extension indicates that the scanned data  84  is in PDF format. The scanned-data file  90  similarly includes a file name  92  and a piece of scanned data  94 . 
       FIG. 4  illustrates a data structure in the transmission management data storage area  28  in the scanner device  10  according to the embodiment of the present invention. The transmission management data storage area  28  is a storage area to store a plurality of sets of transmission management data  100 , although a single set of transmission management data  100  is illustrated in  FIG. 4 . A set of transmission management data  100  includes items which are an IP address  102  (i.e., 192.168.0.5) provided to the scanner device  10 , a connection ID  104  (indicated by “xxxxxxx” in  FIG. 4 ), a data transmission starting point  106  (i.e., 0), which indicates an initial byte of data transmission in the data transmission task, a total number of bytes  108  to be transmitted (i.e., 15000), and a number of transmitted bytes  110  (i.e., 1000). Functionalities and methods to set these items will be described later in detail. 
     The storage area  30  stores information which is other than the information to be stored in the destination URL storage area  24 , the scanned-data storage area  26 , and the transmission management data storage area  28 . 
     The network interface  32  is connected to the communication line  36  so that the scanner device  10  can communicate with the PC  40  through the communication line  36 . 
     Next, a configuration of the PC  40  will be described. The PC  40  is equipped with an operation unit  42 , a display unit  44 , a control unit  46 , a storage unit  48 , and a network interface  54 . The operation unit  42  includes a keyboard and a mouse, through which various information and instructions are entered by a user. The display unit  44  displays various information to be processed in the PC  40  on a screen of a monitor (not shown). The control unit  46  controls various operations of the PC  40  according to programs (not shown) stored in the storage unit  48  and instructions entered by the user. 
     The storage unit  48  includes a ROM, an EEPROM, a RAM, and an HDD. The storage unit  48  is provided with a common folder  50  and a miscellaneous storage area  52 . The common folder  50  can be created by the user who manipulates the operation unit  42 . The common folder  50  is a shared folder which is provided in the PC  40  and can be accessed by the other external devices. A folder which is not set to be common is not accessible to the other external devices. In the present embodiment, the URL  62  of the common folder (i.e., 192.168.0.2/common) in the data set  70  of the destination device URL storage area  24  indicates a URL of the common folder  50  in the PC  40 . The miscellaneous storage area  52  is a storage area for miscellaneous information. 
     The network interface  54  is connected to the communication line  36  so that the PC  40  can communicate with the scanner device  10  through the communication line  36 . 
     Next, a process to be executed by the control unit  20  in the scanner device  10  will be described.  FIGS. 5-7  are flowcharts to illustrate a scanning process to be executed in the scanner device  10  according to the embodiment of the present invention. In the scanning process, the scanned data representing the image formed on an original sheet is transmitted to the destination device. The scanning process starts when the user designates at least one destination of the scanned data among a plurality of destinations registered in the scanner device  10 . More specifically, the user manipulates the operation unit  12  to select at least one data set representing a destination device among the data sets  70 ,  72  which are stored in the destination URL storage area  24 . When at least one data set is selected and the user manipulates the operation unit  12  to start the scanning process, the control unit  20  starts the scanning process starts. 
     When the scanning process starts, in S 10 , a file name for the scanned data is created prior to creating the scanned data. The file name includes a character string indicating a current date and an extension (see the file names  82 ,  92  in  FIG. 2 ). When the file name is created, the scanner unit  16  is driven to scan the original sheet which is placed on the original sheet tray  18 . Thus, when scanning is completed, the scanned data representing the scanned image is created. The scanned data and the file name are associated with each other and stored in the scanned-data storage area  26 . 
     In S 12 , the control unit  20  examines as to whether a plurality of communication sessions can be established in parallel paths between an IP address provided to the scanner device  10  and the destination device (i.e., the PC  40 ) designated by the user. The scanner device  10  according to the present embodiment is capable of establishing a plurality of communication sessions in parallel paths based on a single IP address. In S 12 , it is examined as to whether the PC  40  is provided with the similar capability (i.e., as to whether capable of establishing a plurality of communication sessions in parallel paths). A method to establish a communication session between the scanner device  10  and the PC  10  includes the following steps:
     1. The control unit  20  transmits a SYN (synchronization) packet to the PC  40 .   2. A SYN/ACK (acknowledgement) packet is returned to the controller  20  by the PC  40 .   3. The control unit  20  transmits an ACK packet to the PC  40 , whereby connection based on TCP/IP is established.   4. The control unit  20  uses CIFS (Common Internet File System) to establish the communication session. Specifically, the control unit  20  transmits a negotiate REQ (request) of the CIFS to the PC  40 .   5. A negotiate RESP (response) is returned to the control unit  20  by the PC  40 .   6. The control unit  20  transmits a session REQ to the PC  40 .   7. A session RESP is returned to the control unit  20  by the PC  40 , whereby the communication session between one IP address of the scanner device  10  and the PC  40  is established.
 
It is to be noted that CIFS supports a plurality of certifying methods to establish a communication session. Therefore, the communication session may be established in a different certifying method than the method described above.
   

     When the communication session as above (hereinafter, a first communication session) is established, the control unit  20  repeats the above steps 1-7 based on the same IP address of the scanner device  10 . Thus, a second communication session is established. When the second communication session is established while the first communication is maintained, an examination result “YES” is stored in the storage area  30 . When the first communication session is disconnected upon establishment of the second communication session, an examination result “NO” is stored in the storage area  30 . Thereafter, the controller  20  disconnects the first and the second communication sessions. 
     In S 14 , the transmission management data  100  is created. More specifically, the control unit  20  reserves a predetermined-sized storage area in the transmission management data storage area  28  to store the transmission management data  100  to be created. Further, an IP address provided to the scanner device  10  and available for data transmission is written to be the IP address  102  in the transmission management data  100 . In S 14 , no other information for the remaining items  104 - 110  in the transmission management data  100  is written. 
     In S 16 , information corresponding to the items  106 - 110  is provided to fill the transmission management data  100 . Specifically, “0” is written to be the starting point  106  of data transmission, and a total number of bytes of the scanned data created in S 10  is written to be the total number of bytes to be transmitted. Further, “0” is written to be the number of transmitted bytes  110 . In S 16 , information for the connection ID  104  is not provided. 
     In S 18 , connection with the PC  40  is established based on the IP address  102  written in the transmission management data  100  in S 14 . The control unit  20  obtains a connection ID included in the session RESP which was returned by the PC  40  in the above step 7 and writes in the transmission management data  100  to be the connection ID  104 . The obtained connection ID  104  is appended to data to be transmitted upon transmission and to a response packet which is returned in response to the transmission. Thus, based on the connection ID  104 , the control unit  20  can recognize to which transmission the response packet is provided. Writing the connection ID  104  in the transmission management data  100  in S 18  completes the transmission management data  100 . Upon completion of S 18 , the control unit  20  activates an elapse time counter and an idle time counter. Values counted in the counters are used in S 40  and S 42  in  FIG. 6 , which will be described later in detail. 
     In S 20 , the control unit activates a data transmission task.  FIG. 8  is a flowchart to illustrate a data transmission task to be performed in the scanner device  10  according to the embodiment of the present invention. When the data transmission task is activated in S 20  in  FIG. 5 , a flow of steps illustrated in  FIG. 8  is started. Further, the control unit  20  continues to execute steps following S 22  in S 5  concurrently with the data transmission task shown in  FIG. 8 . Accordingly, a plurality of data transmission tasks may run concurrently. In such a case, the transmission management data  100  is created for each data transmission task, and each of the data transmission tasks is provided with a corresponding set of transmission management data  100 . 
     When a data transmission task is activated, in S 90 , a data transmission originated point of the scanned data is stored in the storage area  30  in the storage unit  22 . The data transmission originated point defines a transmitted data portion and a remaining data portion in the scanned data in the data transmission task. Thus, when a plurality of data transmission tasks run concurrently, the data transmission originated points are set on the data transmission task basis. It is to be noted that the data transmission originated point may be stored in the transmission management data  100  to be one of the items to configure the transmission management data  100 . In S 90 , the data transmission starting point  106  in the transmission management data  100  corresponding to the data transmission task is stored in the storage area  30  to be the data transmission originated point. For example, when a data transmission task corresponding to the transmission management data  100  created in S 14 -S 18  in  FIG. 5  is run, a data transmission originated point “0” is stored in the storage area  30  to be the data transmission originated point. 
     In S 92 , the control unit  20  examines as to whether the common folder  50  in the destination device (i.e., the PC  40 ), which was designated by the user prior to activation of the scanning process in  FIG. 5 , includes a file having a file name identical to the file name of the scanned data file created in S 10  in  FIG. 5 . The data file stored in the common folder  50  having the file name identical to the file name of the scanned data file created in S 10  in  FIG. 5  will be hereinafter referred to as an in-transmission file. When no in-transmission file is stored in the common folder  50 , the control unit  20  transmits a CREATE command, which instructs the PC  40  to create a data file having a file name identical to the file name of the scanned data file created in S 10  in  FIG. 5 , to the PC  40 . According to the CREATE command, the PC  40  creates an in-transmission file and stores in the common folder  50 . It is to be noted that at this point the in-transmission file does not yet include contents of the scanned data. When an in-transmission file is stored in the common folder  50 , the control unit  20  transmits an OPEN command, which instructs the PC  40  to open the in-transmission file, to the PC  40 . In S 92 , the control unit  20  sets the in-transmission file to be shared to be writable by a plurality of data transmission tasks running concurrently. 
     In S 94 , the control unit  20  reads a predetermined number of bytes of the scanned data starting from the data transmission originated point, which is set in S 90 . For example, when the data transmission originated point set in S 90  is “0,” the predetermined bytes of the scanned data starting from the initial byte are read. For another example, when the data transmission originated point set in S 90  is “1000,” the predetermined bytes of the scanned data starting from the 1000th byte are read. The scanned data being read is stored in a predetermined buffer area in the storage area  30 . 
     In S 96 , the control unit  20  writes the scanned data stored in the predetermined buffer area in S 94  in the in-transmission file. More specifically, the control unit  20  transmits a command to instruct the PC  40  to write the scanned data in the predetermined buffer area in the in-transmission file to the PC  40 . Thus, the scanned data is written in the in-transmission file. 
     In S 98 , the control unit  20  updates the data transmission originated point of the scanned data. Specifically, the control unit  20  increments the data transmission originated point by the number of bytes of the scanned data transmitted to the PC  40  in S 96 . For example, when the data transmission originated point is set to be “0,” and the number of bytes of the scanned data transmitted in S 96  is “1000,” the control unit  20  updates the data transmission originated point to be “1000.” Further, the control unit  20  updates the number of transmitted bytes  110  in the transmission management data  100  corresponding to the current data transmission task. That is, the control unit  20  increments the number of transmitted bytes  110  by the number of bytes of the scanned data transmitted in S 96 . For example, when the number of transmitted bytes  110  is “1000,” and the number of bytes of the scanned data transmitted in S 96  is “1000,” the control unit  20  updates the number of transmitted bytes  110  to “2000.” 
     In S 100 , the control unit  20  examines as to whether the number of transmitted bytes  110  in the transmission management data  100  corresponding to the current data transmission task matches the total number of bytes  108  to be transmitted. If the number of transmitted bytes  110  does not match the total number of bytes  108  (S 100 : NO), the control unit  20  returns to S 94  and repeats S 94 -S 100  until it is determined that the number of transmitted bytes  110  in the transmission management data  100  matches the total number of bytes  108  to be transmitted in S 100  (S 100 : YES). The control unit  20  proceeds to S 102 . 
     In S 102 , the control unit  20  transmits a CLOSE command, which instructs the PC  40  to close the in-transmission file, to the PC  40 . Thereafter, in S 104 , the control unit  20  notifies the scanning process ( FIGS. 5-7 ) running in parallel of completion of the data transmission. Thus, the data transmission task is completed. 
     Next, steps following S 22  in  FIG. 5  in the scanning process will be described. In S 22 , the control unit  20  examines as to whether all of the data transmission tasks, which were activated in S 20  or in S 74  in  FIG. 7  (described later), have notified the control unit  20  of completion of data transmission (see S 104  in  FIG. 8 ). If not all the transmission tasks notified of completion of the data transmission (S 22 : NO), the control unit  20  proceeds to S 40  in  FIG. 6 . 
     In S 40 , the control unit  20  examines as to whether a predetermined time period has elapsed based on the value indicated by the elapse time counter activated in S 18  in  FIG. 5 . The predetermined time period may be set based on a size of the remaining data, and/or a bandwidth of the interfaces through which the scanned data is transmitted. Alternatively, the predetermined time period may be a fixed period. When the predetermined time period has elapsed (S 40 : YES), the control unit  20  proceeds to S 42 . When the predetermined time period has not elapsed (S 40 : NO), the control unit  20  returns to S 22 . 
     In S 42 , the control unit  20  examines as to whether the CPU of the control unit  20  has idled (i.e., ready) over a predetermined idling period based on the idle time counter activated in S 18  in  FIG. 5 . The predetermined idling period may be obtained by a value indicated by the idle time counter multiplied by a predetermined ratio (e.g., 50%). When the CPU has not idled over the predetermined idling period (S 42 : NO), the control unit  20  returns to S 22 . 
     When the CPU has idled over the predetermined idling period (S 42 : YES), in S 44 , the control unit  20  refers to the transmission management data  100  firstly created in S 14 -S 18 . Further, the control unit  20  initializes and restarts the elapse time counter and the idle time counter. The control unit  20  proceeds to S 46 . 
     In S 46 , the control unit  20  obtains a number of remaining bytes of the scanned data to be transmitted. The remaining bytes of the scanned data can be obtained by the total number of bytes  108  subtracted by the number of transmitted bytes  110  in the transmission management data  100 . In S 46 , further, the control unit  20  examines as to whether the number of remaining bytes to be transmitted is greater than a predetermined number of bytes. The predetermined number of bytes may be a fixed value or a variable value. When the predetermined number of bytes is a variable number, the predetermined number may be obtained based on, for example, the total number of bytes in the scanned data (e.g., 10% of the total number of bytes). When the number of remaining bytes to be transmitted is not greater than the predetermined number (S 46 : NO), the control unit proceeds to S 76  in  FIG. 7 . 
     When the number of remaining bytes is greater than the predetermined number (S 46 : YES), in S 48 , the control unit  20  examines as to whether a plurality of communication sessions can be established in parallel between the scanner device  10  and the PC  40  based on the IP address provided to the scanner device  10 . The determination is made based on the examined result obtained in S 12  in  FIG. 5 , which is stored in the storage area  30 . When a plurality of communication sessions cannot be established in parallel (S 48 : NO), the control unit  20  proceeds to S 50 . When a plurality of communication sessions can be established (S 48 : YES), the control unit  20  proceeds to S 54 . 
     Following S 48  (S 48 : NO), in S 50 , the control unit  20  examines as to whether there is a usable IP address to establish a communication session provided to the scanner device  10  and being different from the IP address which has been used and examined in S 48 . If there is no usable IP address (S 50 : NO), the control unit  20  proceeds to S 76  in  FIG. 7 . When the scanner device  10  is provided with a different usable IP address (S 50 : YES), in S 52 , the control unit  20  creates a new set of transmission management data  100 . The control unit  20  writes the different usable IP address in the transmission management data  100  to be the IP address  102 . The control unit  20  proceeds to S 70  in  FIG. 7 . 
     Following S 48  (S 48 : YES), in S 54 , the control unit  20  creates a new set of transmission management data  100 . Specifically, a predetermined sized area is reserved in the transmission management data storage area  28  to store the transmission management data  100 . In S 54 , the control unit  20  writes the IP address in the transmission management data  100  referred to in S 44  or an IP address in transmission management data  100  referred to in S 78  in  FIG. 7  (described later) in the transmission management data  100  to be the IP address  102 . The control unit  20  proceeds to S 70  in  FIG. 7 . 
     In S 70 , the control unit  20  updates the total number of bytes  108  to be transmitted in the transmission management data  100  referred to in S 44  or in S 78 . Further, the control unit  20  writes a data transmission starting point  106  and a total number of bytes  108  to be transmitted and a number of transmitted bytes  110  in the transmission management data  100  created in S 52  or S 54 . A method to obtain the values to be written in the transmission management data  100  in S 70  will be described hereinbelow with reference to  FIG. 9 .  FIG. 9  illustrates contents of the transmission management data being created and updated in the scanning process in the scanner device  10  according to the embodiment of the present invention 
     The control unit  20  obtains the number of remaining bytes to be transmitted by subtracting the number of transmitted bytes  110  (i.e., 3000) from the total number of bytes  108  (i.e., 15000) in the transmission management data  100  ( 200   a ) which was referred to in S 44  (or S 78 ). Thereafter, the obtained number of remaining bytes is divided by two (i.e., (15000−3000)/2=6000). Further, the bisected number (i.e., 6000) is subtracted from the total number of bytes  108  (i.e., 15000) to be transmitted in the transmission management data  200   a  (i.e., 15000−6000=9000). The total number of bytes  108  to be transmitted in the transmission management data  200   a  is updated to be 9000. Thus, the transmission management data  200   a  is updated to be transmission management data  200   b . Next, the bisected number (i.e., 6000) is added to the number indicating the data transmission originated point (i.e., 3000) for the scanned data corresponding to the transmission management data  200   a , which was referred to in S 44  or S 78 , and the added number (i.e., 6000+3000=9000) is written in the transmission management data  210   a , which was created in S 52  or S 54 , to be the data transmission starting point  106  of the transmission management data  210   a . The number of remaining bytes  110  according to the transmission management data  200   a  (i.e., 12000) divided by two (i.e., 12000/2=6000) is written in the transmission management data  210   a  to be the total number of bytes  108  to be transmitted. Further, a value “0” is written in the transmission management data  210   a , which was created in S 52  or S 54 , to be the number of transmitted bytes  110 . 
     Further, when the transmission management data  210   b  is referred to in S 78 , as shown in  FIG. 9 , the transmission management data  210   b  includes the number of total bytes  108  being 6000 and the number of transmitted bytes  110  being 1000. The number of remaining bytes being 5000 is obtained by 1000 subtracting from 6000. The number of remaining bytes 5000 is bisected (i.e., 5000/2=2500), and the bisected number 2500 is subtracted from the total number of bytes  108  (i.e., 6000−2500=3500). Accordingly, a total number of bytes  108  (i.e., 3500) is written in the transmission management data  210   b , which is thus updated to be transmission management data  210   c.    
     When the transmission management data  210   b  is referred to in S 78 , in S 52  or S 54 , transmission management data  220  is newly created. The data transmission starting point  106  is obtained by adding a bisected number of remaining bytes (i.e., (6000−1000)/2=2500) to the data transmission starting byte (i.e., 10000) for the transmission management data  210   b  (i.e., 10000+2500=12500). Accordingly, a value 125000 is written in the transmission management data  220  to be the data transmission starting point  106 . Further, the bisected number of remaining bytes (i.e., 2500) is written in the transmission management data  220  to be the total number of bytes  108 . Furthermore, a value “0” is written in the transmission management data  220 , to be the number of transmitted bytes  110 . 
     Following S 70  in  FIG. 7 , in S 72 , the control unit  20  establishes connection with the PC  40 . In this step, the usable IP address  102  written in the transmission management data  100  in S 52  or in S 54  is used. The communication session between scanner device  10  and the PC  40  based on the usable IP address  102  is established in a process similar to that is performed in S 18  (see  FIG. 5 ). The control unit  20  writes the connection ID obtained in the connection establishment is written in the transmission management data  100 , which was created in S 52  or S 54 , to be the connection ID  104 . Thus, the transmission management data  100  is completed with the items  102 - 110 . 
     In S 74 , the control unit  20  activates a data transmission task (see  FIG. 8 ) to run according to the transmission management data  100 , which was created in S 52  or S 54 . Therefore, the data transmission task activated in S 20  (see  FIG. 5 ) and the data transmission task activated in S 74  are run concurrently to be performed by the control unit  20 . Additionally or alternatively, a data transmission task activated in previous S 74  can be run concurrently with the data transmission tasks activated in S 20  and current S 74 . Thus, the scanned data stored in the scanned-data file created in S 10  (see  FIG. 5 ) is transmitted to the PC  40  in a plurality of data transmission tasks through a plurality of communication sessions concurrently. The control unit proceeds to S 76 . 
     It is to be noted that a plurality of sets of transmission management data  100  are present in the transmission management data storage area  28  when transmission management data  100  is referred to in S 44 , and all of the plurality of sets of transmission management data  100  are to be processed through the steps following S 46 . Therefore, in S 76 , the control unit  20  examines as to whether all of the transmission management data  100  has been processed through steps following S 46 . If there is a set of unprocessed transmission management data  100  remains (S 76 : NO), in S 78 , the control unit  20  refers to a next set of transmission management data  100  in the transmission management data storage area  28  so that the next set of transmission management data  100  is processed through steps following S 46 . When all of the transmission management data  100  in the transmission management data storage area  28  has been processed (S 76 : YES), the control unit  20  returns to S 22  (see  FIG. 5 ). 
     In S 22 , the control unit  20  examines as to whether all of the data transmission tasks, which were activated in S 20  or in S 74  in  FIG. 7 , have notified the control unit  20  of completion of data transmission. If all the transmission tasks notified of completion of the data transmission (S 22 : YES), in S 24 , the control unit  20  disconnects all of the communication session between the scanner device  10  and the PC  40 . Further, the control unit  20  deletes all of the sets of the transmission management data  100 . Thus, the scanning process is terminated. 
     According to the scanner device  10  in the above embodiment, a single scanned-data file divided in sets can be transmitted concurrently in a plurality of communication sessions. It is to be noted, if a scanned-data file is transmitted in a single communication session, transmission of a divided portion of scanned-data and reception of a response are repeated serially until transmission of the entire scanned-data file is completed. In other words, a next data transmission cannot be started until a response to a previous data transmission is received. In the above embodiment, on the other hand, the scanned-data file can be transmitted in parallel within the plurality of data transmission tasks, and the data transmission does not require reception of responses to the previous data transmission from the PC  40 . Therefore, the scanned-data file can be transmitted in a shorter runtime. 
     According to the scanner device  10  in the above embodiment, further, the data sizes of the divided scanned data to be transmitted concurrently are substantially balanced (i.e., bisections in S 70 ) so that the scanned data file can be transmitted in a shorter runtime. 
     It is to be noted that the scanner device  10  according to the above embodiment examines as to whether the PC  40  is capable of establishing a plurality of communication sessions with the scanner device  10  based on one IP address provided to the scanner device  10  (see S 12  in  FIG. 5 ). When affirmative judgment is made, the scanner device  10  establishes a plurality of communication sessions based on the single IP address. Meanwhile, when negative judgment is made, the scanner device  10  establishes a plurality of communication sessions based on a plurality of IP addresses. It is to be noted that establishing a plurality of communication sessions based on a single IP address is prioritized over establishing a plurality of communication sessions based on a plurality of IP addresses. Therefore, a plurality of communication sessions can be established based on less IP addresses preferentially. 
     Further, it is to be noted that a plurality of data transmission tasks are activated concurrently specifically when the CPU is maintained idling for a predetermined idling time period (see S 42  in  FIG. 6 ). Thus, activation of a plurality of data transmission tasks concurrently can be avoided when the CPU is maintained idling for a shorter period of time. It is to be noted that activation of a plurality of data transmission tasks when the CPU is maintained idling for a shorter period of time may cause the runtime of the entire data transmission to be longer. 
     The scanner device  10  according to the above embodiment activates a new data transmission task specifically when the number of remaining bytes to be transmitted in the data transmission task is greater than a predetermined number (see S 46  in  FIG. 6 ). It is to be noted that the data transmission may be completed in a shorter time period when the number of the remaining bytes to be transmitted is smaller. This is because that activation of a new data transmission task requires steps S 52 , S 54 , S 70 , and S 72 , for example, which may require additional runtime. 
     Although an example of carrying out the invention has been described, those skilled in the art will appreciate that there are numerous variations and permutations of the data transmission device that fall within the spirit and scope of the invention as set forth in the appended claims. It is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or act described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. 
     For example, the PC  40  being an external device to be connected with the scanner device  2  to establish communication sessions may be replaced with other data communication devices such as a server, a printer, a mobile terminal including a cell phone and a PDA (Personal Digital Assistance). 
     For another example, the scanner device  10  may be equipped with a plurality of different types of interfaces. Alternatively, the scanner device  10  may be equipped with a single interface. For another example, the scanner device  10  may store the examined result obtained in S 12  (see  FIG. 5 ) after completion of the scanning process. In this regard, the control unit  20  may not necessarily examine as to whether a plurality of communication sessions can be established with the PC  40  in parallel, but the stored examination result can be utilized. 
     For another example, a communication protocol to be used between the scanner device  10  and the PC  40  is not limited to CIFS protocol but may be, for example, FTP (File Transfer Protocol) and WebDAV (Distributed Authoring and Versioning protocol for the World Wide Web). 
     Further, in S 70  (see  FIG. 7 ), the number of remaining bytes to be transmitted is divided by two to obtain the total number of bytes to be transmitted. However, the number of remaining bytes may not necessarily be divided by two, but may be divided by a different number.