WO2024154844A1 - 업로드와 다운로드의 동시적 수행 - Google Patents
업로드와 다운로드의 동시적 수행 Download PDFInfo
- Publication number
- WO2024154844A1 WO2024154844A1 PCT/KR2023/000854 KR2023000854W WO2024154844A1 WO 2024154844 A1 WO2024154844 A1 WO 2024154844A1 KR 2023000854 W KR2023000854 W KR 2023000854W WO 2024154844 A1 WO2024154844 A1 WO 2024154844A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- upload
- target file
- download
- procedure
- terminal
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/52—Network services specially adapted for the location of the user terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
Definitions
- This disclosure relates to technology for simultaneously uploading and downloading files.
- File transfer means transferring files from one computer system to another computer system via a network.
- file transfer is mediated by a communication protocol, and as computing technology develops, file transfer protocols are also designed to suit the evolving environment.
- the technical problem to be solved through this disclosure is to provide technology that improves the convenience of users using file transfer.
- Another technical problem to be solved through the present disclosure is to provide a technology that can save time required for file transfer.
- Another technical problem to be solved through this disclosure is to provide a technology that can save the time required to download files while ensuring the completeness of file uploads.
- Another technical problem to be solved through this disclosure is to provide a technology that can easily transfer files between heterogeneous devices.
- An electronic device includes a communication interface configured to enable communication with a network, a processor configured to execute a computer program including one or more instructions, and a memory configured to load the computer program. It includes, when the computer program is executed by the processor, the processor obtains an upload request requesting upload of the target file from the first terminal, and in response to the upload request, an upload procedure for the target file Initiates, and when the upload of a part of the target file is completed according to the initiation of the upload procedure, activating download permission to allow downloading of the target file, and before the end of the upload procedure, the first terminal Obtain a download request requesting download of the target file from a second terminal, which is distinguished from the other terminal, and in response to the download request, perform a download procedure to download the target file to the second terminal according to the progress of the upload procedure. can be started.
- a computer-readable recording medium is a non-transitory computer-readable recording medium that records a program to be executed on a computer, wherein the program, when executed by a processor, causes the processor to: An operation of obtaining an upload request requesting upload of a target file from a terminal, an operation of initiating an upload procedure for the target file in response to the upload request, and a portion of the target file is uploaded according to the initiation of the upload procedure.
- it may include an executable command to perform an operation of initiating a download procedure for downloading the target file to the second terminal according to the progress of the upload procedure.
- a method includes the operation of obtaining an upload request requesting upload of a target file from a first terminal, in response to the upload request, initiating an upload procedure for the target file, When a part of the target file is uploaded according to the initiation of the upload procedure, an operation of activating a download right to allow downloading of the target file, before the end of the upload procedure, a second terminal distinct from the first terminal Obtaining a download request requesting download of the target file from a terminal, and in response to the download request, initiating a download procedure to download the target file to the second terminal according to the progress of the upload procedure. It can be included.
- time required for file transfer can be saved.
- the time required to download a file can be saved while ensuring the completeness of file upload.
- Figure 1 shows an environment in which devices according to an embodiment of the present disclosure can be applied.
- Figure 3 shows a flowchart showing a method according to another embodiment of the present disclosure.
- FIG. 5 shows a flowchart showing detailed operations of the start operation of the upload procedure and the start operation of the download procedure described with reference to FIG. 3 .
- FIG. 6 shows a flowchart showing detailed operations of the start operation of the download procedure described with reference to FIG. 3.
- Figure 7 shows a flowchart showing a method according to another embodiment of the present disclosure.
- Figure 8 shows a flow chart showing a method according to another embodiment of the present disclosure.
- expressions such as “A, B, and C,” “A, B, or C,” “at least one of A, B, and C,” or “at least one of A, B, or C” refer to each of the listed It can refer to an item or all possible combinations of listed items.
- “at least one of A or B” may refer to both (1) at least one A, (2) at least one B, (3) at least one A and at least one B.
- the expression "based on” is used to describe one or more factors that influence the act or action of decision, judgment, or action described in the phrase or sentence containing this expression, and is used in this disclosure. does not exclude additional factors influencing the decision, act of judgment, or action.
- a certain component e.g., a first component
- another component e.g., a second component
- a processor configured to perform a specific operation refers to a general purpose processor capable of performing that specific operation by executing software. It may mean, or it may mean a special purpose computer structured through programming to perform a specific operation.
- transmission used in this disclosure may mean one-way movement of a file.
- sharing used in this disclosure may mean bidirectional movement of files.
- transfer or “sharing” may be interchangeably referred to as a similar meaning of file movement, and unless otherwise expressed in context, it refers to the movement of files online within the scope of a person skilled in the art. It can be understood.
- Figure 1 shows an environment in which devices according to an embodiment of the present disclosure can be applied.
- This environment may include a file sharing device 110, a relay server 120 and user terminals 130 and 140 related to file sharing of the file sharing device 110.
- Figure 1 shows an environment in which one relay server 120 and two user terminals 130 and 140 are connected to the file sharing device 110 through a network, but this is only for convenience of understanding, and the relay The number of servers 120 and user terminals 130 and 140 may vary.
- Figure 1 only shows a preferred embodiment for achieving the purpose of the present disclosure, and some components may be merged, added, or deleted as needed.
- the file sharing device 110 may refer to a device that manages various requests related to file sharing (eg, upload or download) and transmits responses corresponding to the various requests. For example, the file sharing device 110 may obtain various requests related to file sharing from the relay server 120 or the user terminals 130 and 140. For another example, the file sharing device 110 may respond to various requests related to file sharing and transmit responses corresponding to the various requests to the relay server 120 or the user terminals 130 and 140. That is, the file sharing device 110 may operate as an API (Application Programming Interface) server of a file sharing service. Specific operations by which the file sharing device 110 interacts with the devices shown in FIG. 1 will be described later with reference to the drawings of FIG. 3 and below to avoid redundant description.
- API Application Programming Interface
- File sharing device 110 may be implemented with one or more computing devices. For example, all of the functionality of file sharing device 110 may be implemented on a single computing device. As another example, a first function of file sharing device 110 may be implemented in a first computing device and a second function may be implemented in a second computing device. This computing device may be implemented as any type of device equipped with a computing function, but if the file sharing device 110 is an environment that interacts with various devices shown in FIG. 1, the computing device may be an application server. , may be implemented as a proxy server or cloud server.
- the relay server 120 may be a server that acts as a file storage in a file sharing service.
- the relay server 120 may receive files from the first terminal 130 under the management of the file sharing device 110.
- the operation of transmitting a file from the user terminals 130 and 140 may be referred to as an upload operation.
- a series of processes related to this upload operation managed by the file sharing device 110 may be referred to as an upload procedure.
- the relay server 120 may transmit a stored file to the second terminal 140 under the management of the file sharing device 110. In this way, the operation of transmitting a file to the user terminals 130 and 140 may be referred to as a download operation. Additionally, a series of processes related to this download operation managed by the file sharing device 110 may be referred to as a download procedure.
- Relay server 120 may be implemented with one or more computing devices. For example, all functions of relay server 120 may be implemented on a single computing device. As another example, the first function of the relay server 120 may be implemented in a first computing device, and the second function may be implemented in a second computing device. Such a computing device may be implemented as any type of device equipped with a computing function, but if the relay server 120 is an environment in which the relay server 120 interacts with various devices shown in FIG. 1, the computing device may be an application server, It may be implemented as a proxy server or cloud server.
- Figure 1 shows an example in which the relay server 120 realizes a file sharing service by mediating between the file sharing device 110 and the user terminals 130 and 140.
- the relay server 120 may be excluded from the environment that implements file sharing services. That is, the file sharing device 110 also serves as a file storage, thereby realizing a file sharing service, or the file sharing device 110 manages P2P (Peer to Peer) communication between the user terminals 130 and 140, A file sharing service can be realized.
- P2P Peer to Peer
- the user terminals 130 and 140 may be user terminals that request the file sharing device 110 to upload a file (upload request) or to download a file (download request).
- the user terminals 130 and 140 may upload or download files in response to various requests under the management of the file sharing device 110.
- a web browser or application may be installed on the user terminals 130 and 140.
- These user terminals 130 and 140 include, for example, a desktop computer, a laptop computer, a tablet computer, a wearable device, or a smart phone. However, it is not limited to this, and the user terminals 130 and 140 can be implemented with reference to all types of devices equipped with computing functions.
- Networks can be any type of wired or wireless network, for example, Local Area Network (LAN), Wide Area Network (WAN), Mobile Radio Communication Network (MRCN), Wireless Broadband (WiBro), etc. It can be implemented as a network.
- LAN Local Area Network
- WAN Wide Area Network
- MRCN Mobile Radio Communication Network
- WiBro Wireless Broadband
- computing device 200 may be referred to interchangeably with an electronic device.
- Each of the file sharing device 110, relay server 120, and user terminals 130 and 140 described with reference to FIG. 1 may be implemented by the computing device 200.
- Computing device 200 may include one or more processors 210, one or more memories 220, or a communication interface 230. In one embodiment, some components may be deleted from computing device 200 or other components (eg, a display or input device, etc.) may be added to computing device 200 . Additionally, some components may be integrated and implemented additionally or alternatively, or may be implemented as a single or plural entity. In this disclosure, one or more processors 210 may be referred to as processor 210. The term processor 210 may mean a set of one or more processors, unless the context clearly expresses otherwise. Additionally, in this disclosure, one or more memories 220 may be referred to as memory 220 . The term memory 220 may mean a set of one or more memories, unless the context clearly expresses otherwise.
- the processor 210 may perform operations or data processing related to control or communication of each component of the computing device 200. Specifically, the processor 210 may control at least one component of the computing device 200 connected to the processor 210 by running software (or computer program) received from another component. As an example, processor 210 loads instructions (e.g., instructions, code, or code segments) or data into memory 220, processes the instructions or data stored in memory 220, and performs processing according to the processing. The resulting data can be stored in the memory 220. Additionally, the processor 210 may be operatively connected to components of the computing device 200 and perform various operations such as calculation, processing, generation, or processing related to the present disclosure.
- instructions e.g., instructions, code, or code segments
- the processor 210 may be operatively connected to components of the computing device 200 and perform various operations such as calculation, processing, generation, or processing related to the present disclosure.
- Memory 220 can store various data. Data stored in the memory 220 is data acquired, processed, or used by at least one component of the computing device 200, and may include software. Software, when loaded into memory 220, may include one or more instructions that cause processor 210 to perform operations according to various embodiments of the present disclosure. That is, the processor 210 may perform operations according to various embodiments of the present disclosure by executing one or more instructions described above. Memory 220 may include, for example, volatile or non-volatile memory.
- the program is software stored in the memory 220, and is an operating system, application, or application for controlling the resources of the computing device 200 and provides various functions to the application so that the application can utilize the resources of the computing device 200. It may include provided middleware, etc.
- the communication interface 230 can establish a wired or wireless communication channel with another device and transmit and receive various data with the other device.
- the communication interface 230 may include at least one port to be connected to another device with a wired cable in order to communicate with the other device by wire.
- the communication interface 230 can communicate with another device connected by wire through at least one port.
- communication interface 230 may include a cellular communication module and be configured to connect to a cellular network (e.g., 3G, LTE, 5G, Wibro, or Wimax).
- the communication interface 230 includes a short-range communication module and can transmit and receive data with another device using short-range communication (eg, Wi-Fi, Bluetooth, Bluetooth Low Energy (BLE), or UWB).
- the communication interface 230 may include a contactless communication module for contactless communication.
- Non-contact communication may include at least one non-contact proximity communication technology, such as, for example, Near Field Communication (NFC) communication, Radio Frequency Identification (RFID) communication, or Magnetic Secure Transmission (MST) communication.
- NFC Near Field Communication
- RFID Radio Frequency Identification
- MST Magnetic Secure Transmission
- the computing device 200 may be implemented in various known ways for communicating with other devices, and the scope of the present disclosure is not limited by the examples described above.
- computing device 200 may include a display.
- the display can display various screens based on control of the processor 210.
- the display may display a screen with various interfaces that allow visual confirmation of the upload procedure or the download procedure.
- a web browser or a dedicated application may be installed on the computing device 200.
- the display is a component capable of interacting with the user and can receive user input from the user.
- Such a display may be implemented in the form of a touch sensor panel (TSP) that can recognize the contact or proximity of various external objects (eg, a user's finger or stylus).
- TSP touch sensor panel
- computing device 200 may include an input device (eg, a mouse or keyboard).
- the input device may receive data to be used in components of the computing device 200 from outside the computing device 200 (eg, a user).
- processor 210 memory 220, or communication interface 230 shown in FIG. 2 is a bus, General Purpose Input/Output (GPIO), Serial Peripheral Interface (SPI), or Mobile Industry Processor (MIPI). They are connected to each other through an interface, etc., and can send or receive data or signals.
- GPIO General Purpose Input/Output
- SPI Serial Peripheral Interface
- MIPI Mobile Industry Processor
- each step of the methods to be described with reference to the drawings below may be performed by a computing device.
- each step of the methods may be implemented as one or more instructions executed by a processor of a computing device. All steps included in these methods may be performed by a single physical computing device; however, the first steps of the method may be performed by a first computing device and the second steps of the method may be performed by a second computing device. It could be.
- the description will be continued assuming that each step of the above-described methods is performed by the file sharing device 110 described with reference to FIG. 1. However, for convenience of explanation, the description of the operator of each step included in the methods may be omitted.
- FIG. 3 shows a flow chart illustrating a method according to an embodiment of the present disclosure.
- the download procedure is initiated by the download request of the second terminal (user terminal requesting download). It can be understood as relating to a series of actions.
- an upload request requesting upload of the target file may be obtained (S310).
- the file sharing device 110 may obtain an upload request requesting upload of a target file to be uploaded from the first terminal 130.
- the target file is a file that can be the target of upload and may include all types of files that can be shared through a network.
- target files may include text files, image files, or video files.
- An upload request is a type of message requesting upload of a target file, and may include various information about the target file.
- the upload request may include the type of the target file, the size of the target file, the name of the target file, or the source of the target file.
- an upload procedure for the target file may be initiated (S320).
- the file sharing device 110 may initiate an upload procedure for the target file in response to the upload request. Initiation of the upload procedure may be understood as starting a series of processes for storing the target file in a file storage (eg, relay server 120) from the first terminal 130.
- the file sharing device 110 selects a relay server to receive the target file from the first terminal 130 by determining one of a plurality of relay servers that perform the role of a file storage. You can decide.
- download permission allowing download of the target file may be activated (S330).
- the file sharing device 110 may receive information about the upload status of the target file (e.g., the size of the target file for which upload has been completed, etc.) upon initiation of the upload procedure from the relay server 120. Additionally, the file sharing device 110 may confirm that the upload of a part of the target file has been completed based on information about the upload status of the target file. Additionally, as the file sharing device 110 confirms that the upload of a part of the target file has been completed, it may activate download permission for the target file.
- the download permission may be permission to allow a terminal other than the first terminal 130 (e.g., the second terminal 140) to download a target file for which an upload procedure is in progress. If the download permission is activated, the second terminal 140 may request download of the target file for which an upload procedure is in progress. Download permission may be deactivated or activated on the file sharing device 110 in relation to the target file as a binary number having “0” or “1”. For example, if the download permission for “target file A” is determined to be “1”, it can be understood that the download permission for “target file A” is activated. For another example, if the download permission for “B target file” is determined to be “0”, it may be understood that the download permission for “B target file” is deactivated.
- Activation of this download right may be determined based on confirmation that upload of a portion of the target file has been completed.
- a portion of the target file may be, for example, a size with a certain size (e.g., N bytes, where N is a positive real number), a certain percentage of the size of the entire target file (e.g., M %, where M is a positive real number), or It can be defined as the minimum transmission unit of network communication.
- the download permission for the target file is activated, so that the download procedure for the target file in which the upload procedure is in progress can be initiated according to operations to be described later.
- a download request requesting download of the target file may be obtained from the second terminal 140 (S340).
- the file sharing device 110 may obtain a download request requesting to download a target file from the second terminal 140.
- a download request is a type of message requesting the download of a target file, and may include various information about the target file.
- the download request may include the type of the target file, the size of the target file, the name of the target file, or the source of the target file.
- the download permission for the target file is activated, so downloading the target file can be requested, and according to the operations described later, the upload procedure The download procedure for the target file in progress may be initiated.
- the second terminal 140 transmits a link or pin number issued in response to activation of download permission to the file sharing device 110, so that the second terminal 140 may request the file sharing device 110 to download the target file.
- the link or pin number can function as an identifier that identifies the target file.
- the file sharing device 110 may generate a link or pin number for downloading the target file while activating download permission for the target file.
- the file sharing device 110 may transmit the generated link or pin number to the first terminal 130 that has requested upload of the target file.
- the first terminal 130 may transmit a link or pin number related to the target file to the second terminal 140 used by the user who wishes to share the target file.
- the second terminal 140 may request download of the target file by transmitting the link or pin number received from the first terminal 130 to the file sharing device 110.
- An example of a download request method related to a link or pin number will be further explained with reference to FIG. 4 later.
- a download procedure for downloading the target file may be initiated according to the progress of the upload procedure (S350). Specifically, when a download request is obtained from the second terminal 140, the file sharing device 110 may respond to the download request and initiate a download procedure for the target file according to the progress of the upload procedure.
- the progress of the upload procedure can be determined by comparing the size of the target file with the size of the target file for which upload has been completed.
- the file sharing device 110 may obtain the size of the target file using information included in the upload request. Additionally, the file sharing device 110 can obtain the size of the uploaded target file using information about the upload status of the target file obtained from the relay server receiving the target file.
- the initiation of the download procedure described in this operation may be initiated according to the progress of the upload procedure. For example, a download procedure may be initiated when the progress of the upload procedure exceeds “0%”. However, the file sharing device 110 may initiate the download procedure of the target file at any number of different values (e.g., exceeding 5%, etc.), and replace the progress rate of the upload procedure with another value that can be understood as the same as the progress rate.
- the download procedure can also be initiated based on criteria (e.g., having a certain size, etc.).
- Initiation of a download procedure may be understood as starting a series of processes for transmitting a target file from a file storage (eg, relay server 120) to the second terminal 140.
- a file storage eg, relay server 120
- the file sharing device 110 determines which relay server to transmit the target file to the second terminal 140 by determining one of a plurality of relay servers performing the file storage role. You can.
- the download procedure may be started when the first chunk precedes the second chunk in the upload procedure and the upload is completed, and the first chunk precedes the second chunk. That is, according to this embodiment, downloading may proceed in the upload order of the chunks constituting the target file.
- the download procedure for the target file can be started even before the upload procedure for the target file is terminated.
- the upload procedure and the download procedure can be performed simultaneously, the inconvenience of having to wait for the upload procedure to be completed before starting the download procedure can be eliminated.
- the time required for file transfer is You can save effectively.
- FIG. 4 illustrates a diagram illustrating a link screen that may be referenced in various embodiments of the present disclosure.
- the link screen is a screen displayed on the user terminal (e.g., the first terminal 130) that has requested upload of the target file, and displays a link generated based on activation of the download permission described with reference to FIG. 3. It can be understood as a screen.
- the link screen may include a pin number 410, expiration time 420, QR code 430, and link sharing button 440.
- Figure 4 only shows an example to achieve the purpose of the present disclosure, and some components may be added or deleted as needed.
- the pin number 410 is a number that enables downloading of the target file and may be a number uniquely assigned to the target file. For example, when the user of the first terminal 130 informs the user of the second terminal 140 of the corresponding pin number 410, and the user of the second terminal 140 requests download of the target file, the second terminal 140 By entering the corresponding pin number 410 through 140, the file sharing device 110 can identify the target file.
- the pin number 410 shown in FIG. 4 is written as a 6-digit number, but it can be modified to any number as long as it is a character in a string format that can be entered by the user.
- the expiration time 420 may mean the remaining time allowed for a download request of the target file. For example, as shown in FIG. 4, when the expiration time 420 is “09:58”, the download procedure may be initiated only for download requests within 9 minutes and 58 seconds.
- This expiration time 420 may be flexible depending on actual implementation cases.
- the expiration time 420 may be set to be proportional to the size of the target file. In this way, as the expiration time 420 is set, the resources of the file sharing service related to the file sharing device 110 can be efficiently utilized. Specifically, by deleting the target file whose expiration time 420 has passed from the file sharing device 110 or the relay server 120, resources required for unnecessary storage of the target file can be saved.
- FIG. 5 shows a flowchart showing detailed operations of the upload procedure start operation (S320) and the download procedure start operation (S350) described with reference to FIG. 3.
- Operation S510 shown in FIG. 5 can be understood as a detailed operation of the start operation (S320) of the upload procedure
- operation S520 can be understood as a detailed operation of the start operation (S350) of the download procedure.
- a first relay server to upload the target file may be determined based on the geographic location of the first terminal 130 (S511). Specifically, the file sharing device 110 may inquire the geographic location of the first terminal 130 in response to an upload request from the first terminal 130. Additionally, the file sharing device 110 may determine a first relay server to upload the target file among a plurality of relay servers based on the geographical location of the first terminal 130.
- the geographical location of the first terminal 130 may mean the geographical location where the first terminal 130 is currently located.
- the file sharing device 110 may query the geographic location of the first terminal 130 by, for example, referring to the GeoIP of the first terminal 130.
- the file sharing device 110 determines the relay server closest to the geographical location of the first terminal 130 among the plurality of relay servers as the first relay server, so that the file sharing device 110 is connected to the first terminal 130. (130) may determine the relay server that can most quickly upload the target file as the first relay server. In other words, the file sharing device 110 may determine the relay server that can minimize the time required to upload the target file as the first relay server.
- a second relay server for downloading the target file may be determined based on the geographical location of the second terminal 140 (S521). Specifically, the file sharing device 110 may inquire the geographical location of the second terminal 140 in response to a download request from the second terminal 140. Additionally, the file sharing device 110 may determine a second relay server from among a plurality of relay servers to download the target file based on the geographical location of the second terminal 140.
- the decision operation (S521) of the second relay server can be understood with reference to the description of the decision operation (S511) of the first relay server. That is, the file sharing device 110 may determine the relay server that can minimize the time required to download the target file as the second relay server.
- the download procedure can be started (S523). If the first relay server and the second relay server are the same (S522), the download procedure can be started (S523). If the first relay server and the second relay server are the same, transmission of the target file between the relay servers is unnecessary, so the download procedure may be initiated in response to the download request from the second terminal 140. Specifically, when the first relay server and the second relay server are determined to be the same, the file sharing device 110 may initiate a download procedure so that the target file can be downloaded to the second terminal 140. That is, the relay server that is both the first relay server and determined to be the second relay server can receive the target file upload from the first terminal 130 and simultaneously download the target file to the second terminal.
- a relay request may be transmitted to the first relay server (S524). If the first relay server and the second relay server are different, transmission of the target file between the relay servers may be required. Specifically, the file sharing device 110 may generate a relay request instructing transmission of a target file between a first relay server and a second relay server and transmit the relay request to the first relay server.
- the file sharing device 110 selects a second relay server to download the target file to the second terminal 140, based on the total transmission time, to any of the plurality of relay servers. You can change to a single relay server.
- the total transmission time may mean the sum of the transmission time of the target file between the relay servers according to the relay request and the transmission time of the target file between the relay server and the second terminal 140.
- the file sharing device 110 selects the relay server to download the target file from the second relay server.
- the file sharing device 110 may determine a relay server (eg, a third relay server) that can minimize the time required to download the target file as the relay server to download the target file.
- FIG. 6 shows a flowchart showing detailed operations of the start operation (S350) of the download procedure described with reference to FIG. 3.
- Operation S600 shown in FIG. 6 is a detailed operation of the start operation (S350) of the download procedure, and can be understood as an operation related to P2P communication between the first terminal 130 and the second terminal 140.
- the upload procedure is performed and the target file is selected through P2P communication between the first terminal 130 and the second terminal 140.
- a command instructing transmission may be generated (S620), and the command may be transmitted to the first terminal 130 or the second terminal 140 (S630).
- the file sharing device 110 determines whether the first terminal 130 and the second terminal 140 are on the same network by checking the IPs of the first terminal 130 and the second terminal 140. You can.
- the file sharing device 110 performs an upload procedure related to the first terminal 130 and simultaneously sends a command to allow the first terminal 130 and the second terminal 140 to share the target file through P2P communication. can be created. Additionally, the file sharing device 110 may transmit the command to the first terminal 130 or the second terminal 140.
- the same network refers to a case where the first terminal 130 and the second terminal 140 are connected through the same router or can be viewed as being connected through a router of the same system. You can.
- the file sharing device 110 can provide rapid communication between the first terminal 130 and the second terminal 140. P2P communication can be induced for file transfer.
- the first terminal 130 and the second terminal 140 based on a test (e.g., ping test, etc.) between the first terminal 130 and the second terminal 140, the first terminal 130 and the second terminal 140 A command instructing transmission of the target file through P2P communication between terminals 140 may be generated. That is, if the first terminal 130 and the second terminal 140 are not connected to the same network, but have network performance suitable for performing P2P communication, the file sharing device 110 can use P2P communication. To enable file transfer more quickly, commands related to P2P communication can be transmitted to the first terminal 130 or the second terminal 140.
- a test e.g., ping test, etc.
- Figure 7 shows a flowchart showing a method according to another embodiment of the present disclosure.
- the method shown in FIG. 7 can be understood as relating to a series of operations related to a stop event that causes the download procedure to stop.
- the occurrence of a stop event causing a stoppage of the download procedure may be detected (S710).
- the file sharing device 110 can detect the occurrence of a stop event that causes a stoppage of the download procedure by processing various information obtained from the relay server 120 or the user terminals 130 and 140.
- the stop event may be detected based on the size of the target file for which upload has been completed in the upload procedure (first size) and the size of the target file for which download has been completed in the download procedure (second size). You can. For example, when the first size and the second size are the same, since there is no longer a portion of the target file to be downloaded in the second terminal 140, the file sharing device 110 may detect a stop event. For another example, when the second size exceeds X% of the first size (X is a positive real number), the file sharing device 110 may detect a stop event. That is, the file sharing device 110 may detect a stop event based on comparison of the first size and the second size.
- the stop event may be detected based on the stop of the upload procedure from the first terminal. If the upload procedure is stopped, the integrity of the target file may not be guaranteed, so continuing the download procedure may be useless. Accordingly, the file sharing device 110 may detect a stop event based on the stop of the upload procedure.
- the stop event may be detected based on the upload speed of the upload procedure from the first terminal. For example, if the upload speed of the upload procedure is less than or equal to Y bps (Y is a positive real number), the file sharing device 110 may detect a stop event. That is, if the upload speed is below a certain speed, there is a high possibility that the integrity of the target file cannot be guaranteed, so the file sharing device 110 may detect a stop event based on the upload speed of the upload procedure.
- the stop event may be detected based on the download speed of the download procedure to the second terminal. For example, if the download speed of the download procedure is less than or equal to Z bps (Z is a positive real number), the file sharing device 110 may detect a stop event. That is, if the download speed is below a certain speed, there is a high possibility that the download procedure cannot be continued, so the file sharing device 110 may detect a stop event based on the download speed of the download procedure.
- the download procedure may be stopped (S720). Specifically, the file sharing device 110 may stop the download procedure based on the occurrence of a stop event.
- the suspension of the download procedure can be divided into a first suspension with a certain period of rest and a second suspension in which the download procedure is permanently canceled.
- the operator of the file sharing device 110 may determine the stop according to this operation as the first stop or the second stop in a way that can save the resources of the user terminals 130 and 140 while ensuring file integrity. there is. If a specific stop is determined to be the first stop, the download procedure can be resumed when the stop event related to the specific stop is resolved.
- the target file can be quickly transmitted while ensuring the integrity of the target file. If the completeness of the target file cannot be guaranteed, waste of useless resources can be prevented, and if the upload or download speed is reduced due to overload of resources related to file transfer, the process can be stopped by stopping the process. Overload can be relieved.
- Figure 8 shows a flow chart showing a method according to another embodiment of the present disclosure.
- the method shown in FIG. 8 may be understood as relating to a series of operations related to a modification event that causes modification of the communication path.
- the occurrence of a modification event that causes modification of the communication path may be detected (S810).
- the file sharing device 110 can detect a modification event that causes modification of the communication path by processing various information obtained from the relay server 120 or the user terminals 130 and 140.
- the communication path may be understood as a transmission path of the target file via the first terminal 130, one or more relay servers, and the second terminal 140.
- modification events may be detected based on the progress of the upload process.
- a modification event may be detected when the progress of the upload procedure does not increase by a reference rate within a reference time. This standard time or standard rate may be changed depending on actual implementation cases. That is, if the progress of the upload procedure is below a certain speed, there is a high possibility that a communication path exists that can transmit the target file relatively quickly, so the file sharing device 110 can detect a modification event based on the progress of the upload procedure. You can.
- the progress of the upload process may be detected by replacing it with another numerical value that can be viewed as substantially the same, such as the upload speed of the upload process.
- modification events may be detected based on the download speed of the download procedure. That is, if the download speed of the download procedure is below a certain speed, there is a high possibility that a communication path that can transmit the target file relatively quickly exists, so the file sharing device 110 sends a modification event based on the download speed of the download procedure. It can be detected.
- the modification event is based on a comparison between the size of the target file that has been uploaded in the upload procedure (first size) and the size of the target file that has been downloaded in the download procedure (second size). It can be detected based on Specifically, the file sharing device 110 may compare the first size and the second size, and if the difference between the first size and the second size is within the reference size, a modification event may be detected.
- This standard size can be changed at any time depending on actual implementation cases. According to this operation, when the difference between the first size and the second size reaches within the standard size, it can be understood as a case where an imbalance between the upload speed and the download speed occurs, so the file sharing device 110 sends this event.
- the communication path can be modified.
- the communication path may be modified (S820).
- the file sharing device 110 may modify the communication path based on the occurrence of a modification event.
- the transmission path of the target file can be modified to a communication path that can minimize the upload speed of the upload procedure or the download speed of the download procedure.
- each step of the method or algorithm is described in sequential order, but each step may be performed in an order that can be arbitrarily combined in addition to being performed sequentially.
- the description of the flowcharts of this disclosure does not exclude making changes or modifications to the method or algorithm, nor does it imply that any step is required or desirable.
- at least some of the steps may be performed in parallel, iteratively, or heuristically.
- at least some steps may be omitted or other steps may be added.
- Various embodiments of the present disclosure may be implemented as software in a storage medium (MRSM, Machine-Readable Storage Medium) that can be read by a computing device.
- the software may be software for implementing various embodiments of the present disclosure.
- Software can be inferred from various embodiments of the present disclosure by programmers in the technical field to which this disclosure pertains.
- software may be a computer program that contains instructions that can be read by a computing device.
- a computing device is a device that can operate according to instructions retrieved from a storage medium, and may be referred to interchangeably with, for example, an electronic device.
- a processor of the computing device may execute the called instruction, causing components of the computing device to perform a function corresponding to the instruction.
- a storage medium may refer to any type of recording medium in which data is stored that can be read by a device.
- Storage media may include, for example, ROM, RAM, CD-ROM, magnetic tape, floppy disk, or optical data storage devices.
- the storage medium may be implemented in a distributed form, such as in a networked computer system. At this time, the software may be distributed, stored, and executed on a computer system, etc.
- the storage medium may be a non-transitory storage medium.
- Non-transitory storage media refers to media that exist regardless of whether data is stored semi-permanently or temporarily, and do not include signals that propagate temporarily (transitory).
- a communication interface configured to enable communication with a network
- a processor configured to execute a computer program including one or more instructions
- the processor When the computer program is executed by the processor, the processor:
- the electronic device In response to the download request, the electronic device initiates a download procedure to download the target file to the second terminal according to the progress of the upload procedure.
- the processor executes
- a first relay server to upload the target file is determined based on the geographical location of the first terminal.
- the processor executes
- the first relay server transmits a relay request to the first relay server to transmit the target file for which the upload procedure is in progress to the second relay server. do.
- the processor executes
- the download request is obtained from the second terminal through a link for downloading the target file created in response to activation of the download permission.
- the processor executes
- the download request is obtained from the second terminal through the pin number for downloading the target file generated in response to activation of the download permission.
- the target file is,
- the processor executes
- the download permission is activated.
- the download procedure is:
- the upload procedure if the upload of the first chunk is completed before the second chunk, the download of the first chunk is started before the second chunk.
- the download procedure is:
- This procedure is stopped when the download to the second terminal is completed for the same size as the size of the target file for which the upload was completed in the upload procedure.
- the download procedure is:
- the upload request is,
- the progress rate of the upload procedure is determined.
- the processor executes
- the communication path corresponding to the upload procedure is modified.
- the processor executes
- the communication path corresponding to the upload procedure is modified.
- the processor executes
- the upload procedure is performed and the target file is transmitted through P2P (Peer to Peer) communication between the first terminal and the second terminal.
- P2P Peer to Peer
- a non-transitory computer-readable recording medium recording a program to be executed on a computer, wherein the program, when executed by a processor, causes the processor to:
- a computer-readable recording medium comprising executable instructions to perform an operation of initiating a download procedure for downloading the target file to the second terminal according to a progress rate of the upload procedure.
- a method comprising initiating a download procedure for downloading the target file to the second terminal according to a progress rate of the upload procedure.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
파일의 업로드와 다운로드를 동시에 수행하는 기술이 제공된다. 본 개시의 일 실시예에 따른 전자 장치는, 네트워크와 통신이 가능하도록 구성된 통신 인터페이스, 하나 이상의 인스트럭션(instruction)을 포함하는 컴퓨터 프로그램을 실행하도록 구성된 프로세서 및 상기 컴퓨터 프로그램을 로드(load)하도록 구성된 메모리를 포함하고, 상기 컴퓨터 프로그램이 상기 프로세서에 의해 실행될 시, 상기 프로세서는, 제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하고, 상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하고, 상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부에 대해 업로드가 완료된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키고, 상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하고, 상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시할 수 있다.
Description
본 개시는 파일의 업로드와 다운로드를 동시에 수행하는 기술에 관한 것이다.
파일 전송이란, 네트워크를 경유하여 한 컴퓨터 시스템에서 다른 컴퓨터 시스템으로 파일을 전송하는 것을 의미한다. 일반적으로 파일 전송은 통신 프로토콜의 중재를 받게 되는데, 컴퓨팅 기술의 발달에 따라 파일 전송 프로토콜 또한 그 발달에 따른 환경에 맞추어 설계되고 있다.
본 개시를 통해 해결하고자 하는 기술적 과제는, 파일 전송을 이용하는 사용자의 편의를 증진시키는 기술을 제공하는 것이다.
본 개시를 통해 해결하고자 하는 다른 기술적 과제는, 파일 전송에 따라 소요되는 시간을 절약할 수 있는 기술을 제공하는 것이다.
본 개시를 통해 해결하고자 하는 또 다른 기술적 과제는, 파일 업로드의 완결성을 보장하면서도 파일 다운로드에 소요되는 시간을 절약할 수 있는 기술을 제공하는 것이다.
본 개시를 통해 해결하고자 하는 또 다른 기술적 과제는, 이종 기기 간의 파일의 전송을 쉽게 할 수 있는 기술을 제공하는 것이다.
본 개시의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 명세서의 기재로부터 본 개시의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
본 개시의 일 실시예에 따른 전자 장치는, 네트워크와 통신이 가능하도록 구성된 통신 인터페이스, 하나 이상의 인스트럭션(instruction)을 포함하는 컴퓨터 프로그램을 실행하도록 구성된 프로세서 및 상기 컴퓨터 프로그램을 로드(load)하도록 구성된 메모리를 포함하고, 상기 컴퓨터 프로그램이 상기 프로세서에 의해 실행될 시, 상기 프로세서는, 제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하고, 상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하고, 상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부에 대해 업로드가 완료된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키고, 상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하고, 상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시할 수 있다.
본 개시의 다른 일 실시예에 따른 컴퓨터 판독 가능한 기록 매체는, 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가, 제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하는 동작, 상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하는 동작, 상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부가 업로드된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키는 동작, 상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하는 동작 및 상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시하는 동작을 수행하도록 하는 실행 가능한 명령을 포함할 수 있다.
본 개시의 또 다른 일 실시예에 따른 방법은, 제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하는 동작, 상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하는 동작, 상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부가 업로드된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키는 동작, 상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하는 동작 및 상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시하는 동작을 포함할 수 있다.
본 개시에 따르면, 파일 전송을 이용하는 사용자의 편의를 증진시킬 수 있다.
본 개시에 따르면, 파일 전송에 따라 소요되는 시간을 절약할 수 있다.
본 개시에 따르면, 파일 업로드의 완결성을 보장하면서도 파일 다운로드에 소요되는 시간을 절약할 수 있다.
본 개시에 따르면, 이종 기기 간의 파일의 전송을 쉽게 할 수 있다.
본 개시의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 명세서의 기재로부터 본 개시의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시예에 따른 장치들이 적용될 수 있는 환경을 도시한다.
도 2는 본 개시의 일 실시예에 따른 장치들을 구현할 수 있는 컴퓨팅 장치를 도시한다.
도 3은 본 개시의 다른 일 실시예에 따른 방법을 나타내는 순서도를 도시한다.
도 4는 본 개시의 다양한 실시예에서 참조될 수 있는 링크 화면을 나타내는 도면을 도시한다.
도 5는 도 3을 참조하여 설명된 업로드 절차의 개시 동작 및 다운로드 절차의 개시 동작의 세부 동작을 나타내는 순서도를 도시한다.
도 6은 도 3을 참조하여 설명된 다운로드 절차의 개시 동작의 세부 동작을 나타내는 순서도를 도시한다.
도 7은 본 개시의 또 다른 일 실시예에 따른 방법을 나타내는 순서도를 도시한다.
도 8은 본 개시의 또 다른 일 실시예에 따른 방법을 나타내는 순서도를 도시한다.
본 개시에 기재된 다양한 실시예는, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 개시에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리범위는 이하에 제시되는 다양한 실시예나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 개시에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 개시에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 개시에서 사용되는 단수형의 표현은, 문맥상 다르게 뜻하지 않는 한 복수형의 의미를 포함할 수 있으며, 이는 청구항에 기재된 단수형의 표현에도 마찬가지로 적용된다.
본 개시에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 대상들 간의 순서 또는 중요도를 한정하는 것은 아니다.
본 개시에서 사용되는 "A, B 및 C," "A, B 또는 C," "A, B 및 C 중 적어도 하나" 또는 "A, B 또는 C 중 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A, (2) 적어도 하나의 B, (3) 적어도 하나의 A 및 적어도 하나의 B를 모두 지칭할 수 있다.
본 개시에서 사용되는 "~에 기초하여"라는 표현은, 이 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는 데에 사용되고, 이 표현은 그 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 개시에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 개시에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 이 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic purpose processor)를 의미하거나, 그 특정 동작을 수행하도록 프로그래밍을 통해 구조화된 특수 목적 컴퓨터(special purpose computer)를 의미할 수 있다.
본 개시에서 사용되는 용어 "전송"은 파일의 일방향적 이동을 의미할 수 있다. 또한, 본 개시에서 사용되는 용어 "공유"는 파일의 양방향적 이동을 의미할 수 있다. 다만, "전송" 또는 "공유"는 파일의 이동이라는 유사한 의미로 상호 교환적으로 지칭될 수 있으며, 문맥상 다르게 표현되지 않는 한, 통상의 기술자가 이해하는 범위 내에서의 온라인 상의 파일의 이동으로 이해될 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시에 기재된 다양한 실시예를 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예의 설명에서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 그 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1은 본 개시의 일 실시예에 따른 장치들이 적용될 수 있는 환경을 도시한다. 이 환경은 파일 공유 장치(110), 이 파일 공유 장치(110)의 파일 공유에 관계된 릴레이 서버(120) 및 사용자 단말(130, 140)을 포함할 수 있다. 도 1은 한 개의 릴레이 서버(120) 및 두 개의 사용자 단말(130, 140)이 파일 공유 장치(110)와 네트워크를 통해 연결된 환경을 도시하고 있으나, 이는 이해의 편의를 제공하기 위한 것일 뿐이고, 릴레이 서버(120) 및 사용자 단말(130, 140)의 개수는 얼마든지 달라질 수 있다. 또한, 도 1은 본 개시의 목적을 달성하기 위한 바람직한 실시예를 도시하고 있을 뿐이고, 필요에 따라 일부 구성요소가 병합되거나 추가되거나 삭제될 수 있다.
이하, 도 1에 도시된 각 구성요소에 대해 보다 구체적으로 설명한다.
파일 공유 장치(110)는 파일의 공유(예: 업로드 또는 다운로드)와 관련된 각종 요청을 관리하고, 그 각종 요청에 대응되는 응답을 전송하는 장치를 의미할 수 있다. 예를 들어, 파일 공유 장치(110)는 파일의 공유와 관련된 각종 요청을 릴레이 서버(120) 또는 사용자 단말(130, 140)로부터 획득할 수 있다. 다른 예를 들어, 파일 공유 장치(110)는 파일 공유와 관련된 각종 요청에 응답하여, 그 각종 요청에 대응되는 응답을 릴레이 서버(120) 또는 사용자 단말(130, 140)에 전송할 수 있다. 즉, 파일 공유 장치(110)는 파일 공유 서비스의 API(Application Programming Interface) 서버로서 동작할 수 있다. 파일 공유 장치(110)가 도 1에 도시된 장치들과 상호 작용하는 구체적인 동작들에 대해서는, 중복된 설명을 피하기 위하여, 도 3 이하의 도면을 참조하여 추후 설명한다.
파일 공유 장치(110)는 하나 이상의 컴퓨팅 장치로 구현될 수 있다. 예를 들어, 파일 공유 장치(110)의 모든 기능은 단일 컴퓨팅 장치에서 구현될 수 있다. 다른 예를 들어, 파일 공유 장치(110)의 제1 기능은 제1 컴퓨팅 장치에서 구현되고, 제2 기능은 제2 컴퓨팅 장치에서 구현될 수 있다. 이러한 컴퓨팅 장치는 컴퓨팅 기능이 구비된 모든 종류의 장치로 구현될 수 있으나, 파일 공유 장치(110)가 도 1에 도시된 다양한 장치들과 상호 작용하는 환경이라면, 컴퓨팅 장치는 애플리케이션 서버(application server), 프록시 서버(proxy server) 또는 클라우드 서버(cloud server) 등으로 구현될 수 있다.
릴레이 서버(120)는 파일 공유 서비스에서 파일의 저장소 역할을 하는 서버일 수 있다. 예를 들어, 릴레이 서버(120)는 파일 공유 장치(110)의 관리 하에, 제1 단말(130)로부터 파일을 전송 받을 수 있다. 이처럼 사용자 단말(130, 140)로부터 파일을 전송 받는 동작은, 업로드 동작이라고 지칭될 수 있다. 또한, 파일 공유 장치(110)가 관리하는 이 업로드 동작과 관계된 일련의 처리는 업로드 절차라고 지칭될 수 있다. 다른 예를 들어, 릴레이 서버(120)는 파일 공유 장치(110)의 관리 하에, 저장하고 있는 파일을 제2 단말(140)에 전송할 수 있다. 이처럼 사용자 단말(130, 140)에 파일을 전송하는 동작은, 다운로드 동작이라고 지칭될 수 있다. 또한, 파일 공유 장치(110)가 관리하는 이 다운로드 동작과 관계된 일련의 처리는 다운로드 절차라고 지칭될 수 있다.
릴레이 서버(120)는 하나 이상의 컴퓨팅 장치로 구현될 수 있다. 예를 들어, 릴레이 서버(120)의 모든 기능은 단일 컴퓨팅 장치에서 구현될 수 있다. 다른 예를 들어, 릴레이 서버(120)의 제1 기능은 제1 컴퓨팅 장치에서 구현되고, 제2 기능은 제2 컴퓨팅 장치에서 구현될 수 있다. 이러한 컴퓨팅 장치는 컴퓨팅 기능이 구비된 모든 종류의 장치로 구현될 수 있으나, 릴레이 서버(120)가 도 1에 도시된 다양한 장치들과 상호 작용하는 환경이라면, 컴퓨팅 장치는 애플리케이션 서버(application server), 프록시 서버(proxy server) 또는 클라우드 서버(cloud server) 등으로 구현될 수 있다.
도 1은 릴레이 서버(120)가 파일 공유 장치(110)와 사용자 단말(130, 140) 사이를 매개하여 파일 공유 서비스를 실현하는 일례를 도시하고 있으나, 일 실시예에서, 릴레이 서버(120)는 파일 공유 서비스를 실현하는 환경에서 제외될 수 있다. 즉, 파일 공유 장치(110)가 파일의 저장소 역할도 수행함으로써, 파일 공유 서비스를 실현하거나 파일 공유 장치(110)가 사용자 단말(130, 140) 사이의 P2P(Peer to Peer) 통신을 관리함으로써, 파일 공유 서비스를 실현할 수 있다.
사용자 단말(130, 140)은 파일 공유 장치(110)에 파일의 업로드를 요청(업로드 요청)하거나 파일의 다운로드를 요청(다운로드 요청)하는 사용자의 단말일 수 있다. 사용자 단말(130, 140)은 파일 공유 장치(110)의 관리 하에 각종 요청에 대응한 응답으로서, 파일을 업로드하거나 다운로드할 수 있다. 일 실시예에서, 사용자가 파일 공유 서비스의 기능을 사용하기 위해, 사용자 단말(130, 140)에는 웹 브라우저 또는 애플리케이션이 설치될 수 있다. 이러한 사용자 단말(130, 140)은, 예를 들어, 데스크탑 컴퓨터(desktop computer), 랩탑 컴퓨터(laptop computer), 태블릿 컴퓨터(tablet computer), 웨어러블 디바이스(wearable device) 또는 스마트폰(smart phone) 등이 될 수 있으나, 이에 국한되는 것은 아니며 컴퓨팅 기능이 구비된 모든 종류의 장치를 참조하여 사용자 단말(130, 140)을 구현할 수 있다.
파일 공유 장치(110), 릴레이 서버(120) 및 사용자 단말(130, 140) 중 적어도 일부는 네트워크를 통해 통신할 수 있다. 네트워크는 예를 들어, 근거리 통신망(LAN, Local Area Network), 광역 통신망(WAN, Wide Area Network), 이동 통신망(MRCN, Mobile Radio Communication Network), WiBro(Wireless Broadband) 등과 같은 모든 종류의 유선 또는 무선 네트워크로 구현될 수 있다.
도 2는 본 개시의 일 실시예에 따른 장치들을 구현할 수 있는 컴퓨팅 장치(200)를 도시한다. 본 개시에서 컴퓨팅 장치(200)는 전자 장치와 상호 교환적으로 지칭될 수 있다. 도 1을 참조하여 설명된 파일 공유 장치(110), 릴레이 서버(120) 및 사용자 단말(130, 140) 각각은 이 컴퓨팅 장치(200)에 의해 구현될 수 있다.
컴퓨팅 장치(200)는, 하나 이상의 프로세서(210), 하나 이상의 메모리(220) 또는 통신 인터페이스(230)를 포함할 수 있다. 일 실시예에서, 컴퓨팅 장치(200)에서 일부 구성요소가 삭제되거나 다른 구성요소(예: 디스플레이 또는 입력 장치 등)가 컴퓨팅 장치(200)에 추가될 수 있다. 또한, 추가적으로 또는 대체적으로 일부의 구성요소들이 통합되어 구현되거나, 단수 또는 복수의 개체로 구현될 수 있다. 본 개시에서, 하나 이상의 프로세서(210)는 프로세서(210)라고 지칭될 수 있다. 이러한 프로세서(210)라는 용어는, 문맥상 명백히 다르게 표현하지 않는 이상, 하나 또는 그 이상의 프로세서의 집합을 의미할 수 있다. 또한, 본 개시에서, 하나 이상의 메모리(220)는 메모리(220)라고 지칭될 수 있다. 이러한 메모리(220)라는 용어는, 문맥상 명백히 다르게 표현하지 않는 이상, 하나 또는 그 이상의 메모리의 집합을 의미할 수 있다.
이하, 도 2에 도시된 각 구성요소에 대해 보다 구체적으로 설명한다.
프로세서(210)는, 컴퓨팅 장치(200)의 각 구성요소들의 제어 또는 통신에 관한 연산이나 데이터 처리를 수행할 수 있다. 구체적으로, 프로세서(210)는 다른 구성요소로부터 수신된 소프트웨어(또는 컴퓨터 프로그램)를 구동하여 프로세서(210)에 연결된 컴퓨팅 장치(200)의 적어도 하나의 구성요소를 제어할 수 있다. 일례로서, 프로세서(210)는 명령(예: 인스트럭션, 코드 또는 코드 세그먼트) 또는 데이터를 메모리(220)에 로드(load)하고, 메모리(220)에 저장된 명령 또는 데이터를 처리하고, 그 처리에 따른 결과 데이터를 메모리(220)에 저장할 수 있다. 또한, 프로세서(210)는 컴퓨팅 장치(200)의 구성요소들과 작동적으로 연결되어 본 개시와 관련된 다양한 연산, 처리, 생성 또는 가공 등의 동작을 수행할 수 있다.
메모리(220)는 다양한 데이터를 저장할 수 있다. 메모리(220)에 저장되는 데이터는, 컴퓨팅 장치(200)의 적어도 하나의 구성요소에 의해 획득되거나, 처리되거나, 사용되는 데이터로서, 소프트웨어를 포함할 수 있다. 소프트웨어는 메모리(220)에 로드될 때 프로세서(210)로 하여금 본 개시의 다양한 실시예에 따른 동작을 수행하도록 하는 하나 이상의 명령들을 포함할 수 있다. 즉, 프로세서(210)는 전술한 하나 이상의 명령들을 실행함으로써, 본 개시의 다양한 실시예에 따른 동작들을 수행할 수 있다. 메모리(220)는, 예를 들어, 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 일 실시예에서, 프로그램은 메모리(220)에 저장되는 소프트웨어로서, 컴퓨팅 장치(200)의 리소스를 제어하기 위한 운영체제, 애플리케이션 또는 애플리케이션이 컴퓨팅 장치(200)의 리소스들을 활용할 수 있도록 다양한 기능을 애플리케이션에 제공하는 미들웨어 등을 포함할 수 있다.
통신 인터페이스(230)는, 다른 장치와 유선 또는 무선 통신 채널을 설립하고, 그 다른 장치와 다양한 데이터를 송수신할 수 있다. 일 실시예에서, 통신 인터페이스(230)는 다른 장치와 유선으로 통신하기 위해서, 다른 장치와 유선 케이블로 연결되기 위한 적어도 하나의 포트를 포함할 수 있다. 이 경우, 통신 인터페이스(230)는 적어도 하나의 포트를 통하여 유선 연결된 다른 장치와 통신을 수행할 수 있다. 일 실시예에서, 통신 인터페이스(230)는 셀룰러 통신 모듈을 포함하여 셀룰러 네트워크(예: 3G, LTE, 5G, Wibro 또는 Wimax)에 연결되도록 구성될 수 있다. 일 실시예에서, 통신 인터페이스(230)는 근거리 통신 모듈을 포함하여 근거리 통신(예: Wi-Fi, Bluetooth, Bluetooth Low Energy(BLE) 또는 UWB)을 이용해 다른 장치와 데이터 송수신을 할 수 있다. 일 실시예에서, 통신 인터페이스(230)는 비접촉식 통신을 위한 비접촉 통신 모듈을 포함할 수 있다. 비접촉식 통신은, 예를 들면, NFC(Near Field Communication) 통신, RFID(Radio Frequency Identification) 통신 또는 MST(Magnetic Secure Transmission) 통신과 같이 적어도 하나의 비접촉 방식의 근접 통신 기술을 포함할 수 있다. 전술한 다양한 예시들 외에도, 다른 장치와 통신하기 위한 공지된 다양한 방식으로 컴퓨팅 장치(200)가 구현될 수 있으며, 전술한 예시들에 의해 본 개시의 범위가 제한되지 않는다.
일 실시예에서, 컴퓨팅 장치(200)는 디스플레이를 포함할 수 있다. 디스플레이는 프로세서(210)의 제어에 기반하여 다양한 화면을 표시할 수 있다. 예를 들어, 디스플레이는 프로세서(210)의 제어에 기반하여, 업로드 절차 또는 다운로드 절차를 시각적으로 확인할 수 있는 각종 인터페이스들이 적용된 화면을 표시할 수 있다. 각종 인터페이스들이 적용된 화면을 디스플레이에 표시하기 위해서, 예를 들어, 웹 브라우저 또는 전용 애플리케이션이 컴퓨팅 장치(200)에 설치될 수 있다. 또한, 디스플레이는 사용자와 상호 작용이 가능한 구성으로서, 사용자로부터 사용자 입력을 수신할 수 있다. 이러한 디스플레이는, 다양한 외부 객체(예: 사용자의 손가락 또는 스타일러스)의 접촉 또는 근접을 인식할 수 있는 터치 센서 패널(TSP, Touch Sensor Panel)의 형태로 구현될 수 있다.
일 실시예에서, 컴퓨팅 장치(200)는 입력 장치(예: 마우스 또는 키보드)를 포함할 수 있다. 입력 장치는 컴퓨팅 장치(200)의 구성요소에 사용될 데이터를 컴퓨팅 장치(200)의 외부(예: 사용자)로부터 수신할 수 있다.
도 2에 도시된 프로세서(210), 메모리(220) 또는 통신 인터페이스(230) 중 적어도 일부는 버스(bus), GPIO(General Purpose Input/Output), SPI(Serial Peripheral Interface) 또는 MIPI(Mobile Industry Processor Interface) 등을 통해 서로 연결되어, 데이터 또는 신호를 주거나 받을 수 있다.
이하에서는, 본 개시의 다양한 실시예에 따른 방법들에 대하여 상세하게 설명한다. 이하의 도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것은 아님을 유의해야 한다.
또한, 이하의 도면을 참조하여 설명될 방법들의 각 단계는 컴퓨팅 장치에 의해 수행될 수 있다. 다시 말하면, 방법들의 각 단계는 컴퓨팅 장치의 프로세서에 의해 실행되는 하나 이상의 인스트럭션들로 구현될 수 있다. 이러한 방법들에 포함되는 모든 단계는 하나의 물리적인 컴퓨팅 장치에 의하여 실행될 수도 있을 것이나, 방법의 제1 단계들은 제1 컴퓨팅 장치에 의하여 수행되고, 방법의 제2 단계들은 제2 컴퓨팅 장치에 의하여 수행될 수도 있다. 이하에서는, 전술한 방법들의 각 단계가 도 1을 참조하여 설명된 파일 공유 장치(110)에 의해 수행되는 것을 가정하여 설명을 이어가도록 한다. 다만, 설명의 편의상, 방법들에 포함되는 각 단계의 동작 주체는 그 기재가 생략될 수도 있다.
도 3은 본 개시의 일 실시예에 따른 방법을 나타내는 순서도를 도시한다. 도 3에 도시된 방법은, 제1 단말(업로드를 요청하는 사용자 단말)의 업로드 요청으로 개시된 업로드 절차의 종료 전에, 제2 단말(다운로드를 요청하는 사용자 단말)의 다운로드 요청으로 다운로드 절차가 개시되는 일련의 동작들에 관한 것으로 이해될 수 있다.
제1 단말로부터, 대상 파일의 업로드를 요청하는 업로드 요청이 획득될 수 있다(S310). 구체적으로, 파일 공유 장치(110)는 제1 단말(130)로부터 업로드의 대상이 되는 대상 파일의 업로드를 요청하는 업로드 요청을 획득할 수 있다. 대상 파일은, 업로드의 대상이 될 수 있는 파일로서, 네트워크를 통해 공유될 수 있는 모든 유형의 파일을 포함할 수 있다. 예를 들어, 대상 파일은, 텍스트 파일, 이미지 파일 또는 영상 파일 등을 포함할 수 있다. 업로드 요청은, 대상 파일의 업로드를 요청하는 일종의 메시지로서, 대상 파일에 관한 다양한 정보를 포함할 수 있다. 예를 들어, 업로드 요청은, 대상 파일의 유형, 대상 파일의 사이즈, 대상 파일의 이름 또는 대상 파일의 출처 등을 포함할 수 있다.
업로드 요청에 응답하여, 대상 파일에 대한 업로드 절차가 개시될 수 있다(S320). 구체적으로, 파일 공유 장치(110)는 제1 단말(130)로부터 업로드 요청이 획득되면, 그 업로드 요청에 응답하여 대상 파일에 대한 업로드 절차를 개시할 수 있다. 업로드 절차의 개시란, 제1 단말(130)로부터 대상 파일을 파일 저장소(예: 릴레이 서버(120))에 저장하는 일련의 처리를 시작하는 것으로 이해될 수 있다.
업로드 절차와 관련하여, 일 실시예에서, 파일 공유 장치(110)는 파일 저장소 역할을 수행하는 복수의 릴레이 서버 중 어느 하나를 결정함으로써, 제1 단말(130)로부터 대상 파일을 전송 받을 릴레이 서버를 결정할 수 있다.
업로드 절차의 개시에 따라 대상 파일의 일부에 대해 업로드가 완료된 경우, 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한이 활성화될 수 있다(S330). 구체적으로, 파일 공유 장치(110)는 릴레이 서버(120)로부터 업로드 절차의 개시에 따라 대상 파일의 업로드 현황(예: 업로드가 완료된 대상 파일의 사이즈 등)에 관한 정보를 수신할 수 있다. 또한, 파일 공유 장치(110)는 대상 파일의 업로드 현황에 관한 정보에 기초하여 대상 파일의 일부에 대해 업로드가 완료된 것으로 확인할 수 있다. 또한, 파일 공유 장치(110)는 대상 파일의 일부에 대해 업로드가 완료된 것으로 확인함에 따라, 대상 파일에 대한 다운로드 권한을 활성화할 수 있다.
다운로드 권한은, 제1 단말(130) 이외의 다른 단말(예: 제2 단말(140))에 업로드 절차가 진행 중인 대상 파일의 다운로드를 허용케 하는 권한일 수 있다. 만약, 다운로드 권한이 활성화된 경우, 제2 단말(140)은 업로드 절차가 진행 중인 대상 파일에 대한 다운로드를 요청할 수 있다. 다운로드 권한은, 파일 공유 장치(110) 상에서, "0" 또는 "1"을 가지는 이진수로서 대상 파일과 관계되어 비활성화 또는 활성화될 수 있다. 예를 들어, "A 대상 파일"에 대하여 다운로드 권한이 "1"로 결정된 경우, "A 대상 파일"에 대한 다운로드 권한이 활성화된 것으로 이해될 수 있다. 다른 예를 들어, "B 대상 파일"에 대하여 다운로드 권한이 "0"으로 결정된 경우, "B 대상 파일"에 대한 다운로드 권한이 비활성화된 것으로 이해될 수 있다.
이러한 다운로드 권한의 활성화는, 대상 파일의 일부에 대한 업로드가 완료되었다는 확인에 기초하여 결정될 수 있다. 대상 파일의 일부는, 예를 들어, 특정 크기(예: N byte, N은 양의 실수)를 갖는 사이즈, 전체 대상 파일의 사이즈에서의 특정 비율(예: M %, M은 양의 실수) 또는 네트워크 통신의 최소 전송 단위 등으로 정의될 수 있다.
다운로드 권한의 활성화와 관련하여, 일 실시예에서, 대상 파일은 대상 파일의 일부인 제1 청크 및 제2 청크를 포함할 수 있고, 파일 공유 장치(110)는 업로드 절차의 개시에 따라 제1 청크의 업로드가 완료된 경우, 대상 파일에 대한 다운로드 권한을 활성화시킬 수 있다. 청크(예: 제1 청크 및 제2 청크)는, 대상 파일의 일부로서, 네트워크 통신의 최소 전송 단위로 이해될 수 있다. 즉, 대상 파일은 하나 이상의 청크로서 분할되어 업로드 또는 다운로드될 수 있다. 또한, 제1 청크는, 대상 파일에 관계된 최초의 전송 단위로도 이해될 수 있다. 즉, 대상 파일에 관계된 최초의 청크에 대한 업로드가 완료되면, 파일 공유 장치(110)는 대상 파일에 대한 다운로드 권한을 활성화할 수 있다. 본 실시예에 따르면, 대상 파일과 관계된 파일 전송의 최소이자 최초의 단위인 제1 청크의 업로드가 완료되면, 대상 파일에 대한 다운로드 권한이 활성화됨으로써, 대상 파일에 대한 업로드와 다운로드가 동시에 진행될 수 있다.
본 동작에 따라, 대상 파일의 일부에 대한 업로드가 완료된 경우 대상 파일에 대한 다운로드 권한이 활성화됨으로써, 후술될 동작들에 따라, 업로드 절차가 진행 중인 대상 파일에 대한 다운로드 절차가 개시될 수 있다.
업로드 절차의 종료 전에, 제2 단말(140)로부터, 대상 파일의 다운로드를 요청하는 다운로드 요청이 획득될 수 있다(S340). 구체적으로, 파일 공유 장치(110)는 제2 단말(140)로부터 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득할 수 있다. 다운로드 요청은, 대상 파일의 다운로드를 요청하는 일종의 메시지로서, 대상 파일에 관한 다양한 정보를 포함할 수 있다. 예를 들어, 다운로드 요청은, 대상 파일의 유형, 대상 파일의 사이즈, 대상 파일의 이름 또는 대상 파일의 출처 등을 포함할 수 있다.
본 동작에 따르면, 업로드 절차가 종료되어 대상 파일에 대한 업로드가 완료되기 전이라도, 대상 파일에 다운로드 권한이 활성화됨으로써, 대상 파일에 대한 다운로드가 요청될 수 있고, 후술될 동작들에 따라, 업로드 절차가 진행 중인 대상 파일에 대한 다운로드 절차가 개시될 수 있다.
다운로드 요청의 방식과 관련하여, 일 실시예에서, 제2 단말(140)은 다운로드 권한의 활성화에 대응하여 발급된 링크 또는 핀 번호를 파일 공유 장치(110)에 전송함으로써, 제2 단말(140)은 파일 공유 장치(110)에 대상 파일에 대한 다운로드를 요청할 수 있다. 즉, 링크 또는 핀 번호는 대상 파일을 식별하는 식별자로서 기능할 수 있다. 구체적으로, 파일 공유 장치(110)는 대상 파일에 대한 다운로드 권한을 활성화시키면서, 그 대상 파일을 다운로드하기 위한 링크 또는 핀 번호를 생성할 수 있다. 또한, 파일 공유 장치(110)는 생성된 링크 또는 핀 번호를 대상 파일에 관한 업로드를 요청한 제1 단말(130)에 전송할 수 있다. 또한, 제1 단말(130)은 대상 파일에 관계된 링크 또는 핀 번호를, 대상 파일을 공유하고자 하는 사용자가 이용하는 제2 단말(140)에 전송할 수 있다. 또한, 제2 단말(140)은 파일 공유 장치(110)에, 제1 단말(130)로부터 수신한 링크 또는 핀 번호를 전송함으로써, 대상 파일에 대한 다운로드를 요청할 수 있다. 링크 또는 핀 번호와 관계된 다운로드 요청의 방식에 관한 예시에 관해서는, 추후 도 4를 참조하여, 부연 설명한다.
다운로드 요청에 응답하여, 업로드 절차의 진행률에 따라 대상 파일을 다운로드하기 위한 다운로드 절차가 개시될 수 있다(S350). 구체적으로, 파일 공유 장치(110)는 제2 단말(140)로부터 다운로드 요청이 획득되면, 그 다운로드 요청에 응답하여 업로드 절차의 진행률에 따라 대상 파일에 대한 다운로드 절차를 개시할 수 있다.
업로드 절차의 진행률은, 대상 파일의 사이즈와 업로드가 완료된 대상 파일의 사이즈를 비교함으로써, 판정될 수 있다. 파일 공유 장치(110)는 업로드 요청에 포함된 정보로써 대상 파일의 사이즈를 획득할 수 있다. 또한, 파일 공유 장치(110)는 대상 파일을 전송 받고 있는 릴레이 서버로부터 획득한 대상 파일의 업로드 현황에 관한 정보로써 업로드가 완료된 대상 파일의 사이즈를 획득할 수 있다.
본 동작에서 설명된 다운로드 절차의 개시는, 업로드 절차의 진행률에 따라 개시될 수 있다. 예를 들어, 업로드 절차의 진행률이 "0%"를 초과하는 경우에 다운로드 절차가 개시될 수 있다. 다만, 파일 공유 장치(110)는 얼마든지 다른 수치(예: 5% 초과 등)로 대상 파일의 다운로드 절차를 개시할 수 있고, 업로드 절차의 진행률을 치환하여 그 진행률과 동일하게 이해될 수 있는 다른 기준(예: 특정 크기를 갖는 사이즈 등)으로 다운로드 절차를 개시할 수도 있다.
다운로드 절차의 개시란, 파일 저장소(예: 릴레이 서버(120))로부터 대상 파일을 제2 단말(140)에 전송하는 일련의 처리를 시작하는 것으로 이해될 수 있다.
다운로드 절차와 관련하여, 일 실시예에서, 파일 공유 장치(110)는 파일 저장소 역할을 수행하는 복수의 릴레이 서버 중 어느 하나를 결정함으로써, 제2 단말(140)에 대상 파일을 전송할 릴레이 서버를 결정할 수 있다.
다운로드 절차와 관련하여, 다른 일 실시예예서, 다운로드 절차는 업로드 절차에서 제1 청크가 제2 청크보다 선행하여 업로드가 완료되면, 제1 청크가 제2 청크보다 선행하여 다운로드가 개시될 수 있다. 즉, 본 실시예에 따르면, 대상 파일을 구성하는 청크들의 업로드 순서대로 다운로드가 진행될 수 있다.
지금까지 도 3을 참조하여 설명된 방법에 따르면, 대상 파일에 대한 업로드 절차의 종료 전이라도, 그 대상 파일에 대한 다운로드 절차가 개시될 수 있다. 다시 말해, 업로드 절차와 다운로드 절차가 동시에 진행될 수 있게 됨에 따라, 업로드 절차의 완료를 기다려 다운로드 절차를 개시해야 하는 불편함이 해소될 수 있다. 특히, 사용자가 소유하는 제1 기기(예: 제1 단말(130))에서 제2 기기(예: 제2 단말(140))로 대상 파일을 전송하는 경우에, 파일 전송에 따라 소요되는 시간을 효과적으로 절약할 수 있다.
도 4는 본 개시의 다양한 실시예에서 참조될 수 있는 링크 화면을 나타내는 도면을 도시한다.
링크 화면은, 대상 파일에 대한 업로드를 요청한 사용자 단말(예: 제1 단말(130))에 표시되는 화면으로서, 도 3을 참조하여 설명된 다운로드 권한의 활성화에 기초하여 생성되는 링크 등을 표시하는 화면으로 이해될 수 있다.
링크 화면은 핀 번호(410), 만료 시간(420), QR 코드(430) 및 링크 공유 버튼(440)을 포함할 수 있다. 다만, 도 4는 본 개시의 목적을 달성하기 위한 일례를 도시하고 있을 뿐이고, 필요에 따라 일부 구성요소가 추가되거나 삭제될 수 있다.
핀 번호(410)는 대상 파일의 다운로드를 가능케 하는 번호로서 대상 파일에 고유하게 부여되는 번호일 수 있다. 예를 들어, 제1 단말(130)의 사용자가 제2 단말(140)의 사용자에게 해당 핀 번호(410)를 알려주고, 제2 단말(140)의 사용자가 대상 파일의 다운로드를 요청 시 제2 단말(140)을 통해 해당 핀 번호(410)를 입력함으로써, 파일 공유 장치(110)는 대상 파일을 식별할 수 있다.
도 4에 도시된 핀 번호(410)는 6자리의 숫자로 기재되어 있으나, 사용자가 입력할 수 있는 스트링(string) 형식의 문자라면 얼마든지 변형이 가능할 수 있다.
QR 코드(430) 또는 링크도 핀 번호(410)와 표시 유형을 달리할 뿐, 핀 번호(410)와 마찬가지 방식으로 이해될 수 있다. 다만, 제1 단말(130)의 사용자가 해당 링크 공유 버튼(440)을 선택하는 경우라면, 파일 공유 장치(110)는 외부 애플리케이션(예: 메신저, 메일 등)을 호출하여 해당 링크를 제2 단말(140)의 사용자에게 전송하는 동작을 수행할 수 있다.
만료 시간(420)은 대상 파일의 다운로드 요청에 허용되는 잔여 시간을 의미할 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 만료 시간(420)이 "09:58"인 경우, 9분 58초 이내에 다운로드 요청된 건에 한하여 다운로드 절차가 개시될 수 있다. 이와 같은 만료 시간(420)은, 실제 구현 사례에 따라, 신축 가능할 수 있다. 예를 들어, 대상 파일의 크기에 비례하도록 만료 시간(420)이 설정될 수 있다. 이와 같이, 만료 시간(420)이 설정됨에 따라, 파일 공유 장치(110)와 관계된 파일 공유 서비스의 리소스가 효율적으로 활용될 수 있다. 구체적으로, 만료 시간(420)이 도과한 대상 파일을 파일 공유 장치(110) 또는 릴레이 서버(120)에서 삭제함으로써, 대상 파일을 불필요하게 저장하는데 소요되는 리소스를 절약할 수 있다.
도 5는 도 3을 참조하여 설명된 업로드 절차의 개시 동작(S320) 및 다운로드 절차의 개시 동작(S350)의 세부 동작을 나타내는 순서도를 도시한다. 도 5에 도시된 S510 동작은 업로드 절차의 개시 동작(S320)의 세부 동작으로 이해될 수 있고, S520는 동작은 다운로드 절차의 개시 동작(S350)의 세부 동작으로 이해될 수 있다.
업로드 요청에 응답하여, 제1 단말(130)의 지리적 위치에 기초하여, 대상 파일을 업로드할 제1 릴레이 서버가 결정될 수 있다(S511). 구체적으로, 파일 공유 장치(110)는 제1 단말(130)의 업로드 요청에 응답하여, 제1 단말(130)의 지리적 위치를 조회할 수 있다. 또한, 파일 공유 장치(110)는 제1 단말(130)의 지리적 위치에 기초하여, 복수의 릴레이 서버 중 대상 파일을 업로드할 제1 릴레이 서버를 결정할 수 있다.
제1 단말(130)의 지리적 위치는, 제1 단말(130)이 현재 소재하고 있는 지리적인 위치를 의미할 수 있다. 파일 공유 장치(110)는 예를 들어, 제1 단말(130)의 GeoIP를 참조함으로써, 제1 단말(130)의 지리적 위치를 조회할 수 있다.
본 동작에 따르면, 파일 공유 장치(110)가 복수의 릴레이 서버 중 제1 단말(130)의 지리적 위치와 가장 가까운 릴레이 서버를 제1 릴레이 서버로 결정함으로써, 파일 공유 장치(110)는 제1 단말(130)이 대상 파일을 가장 신속히 업로드할 수 있는 릴레이 서버를 제1 릴레이 서버로 결정할 수 있다. 다시 말해, 파일 공유 장치(110)는 대상 파일의 업로드에 소요되는 시간을 최소로 할 수 있는 릴레이 서버를 제1 릴레이 서버로 결정할 수 있다.
다운로드 요청에 응답하여, 제2 단말(140)의 지리적 위치에 기초하여, 대상 파일의 다운로드를 위한 제2 릴레이 서버가 결정될 수 있다(S521). 구체적으로, 파일 공유 장치(110)는 제2 단말(140)의 다운로드 요청에 응답하여, 제2 단말(140)의 지리적 위치를 조회할 수 있다. 또한, 파일 공유 장치(110)는 제2 단말(140)의 지리적 위치에 기초하여, 복수의 릴레이 서버 중 대상 파일을 다운로드할 제2 릴레이 서버를 결정할 수 있다.
제2 릴레이 서버의 결정 동작(S521)은, 제1 릴레이 서버의 결정 동작(S511)에 관한 설명을 참조하여 이해될 수 있다. 즉, 파일 공유 장치(110)는 대상 파일의 다운로드에 소요되는 시간을 최소로 할 수 있는 릴레이 서버를 제2 릴레이 서버로 결정할 수 있다.
제1 릴레이 서버와 제2 릴레이 서버가 동일하면(S522), 다운로드 절차가 개시될 수 있다(S523). 제1 릴레이 서버와 제2 릴레이 서버가 동일하면 릴레이 서버 간의 대상 파일의 전송이 불필요하므로, 제2 단말(140)의 다운로드 요청에 응답하여 다운로드 절차가 개시될 수 있다. 구체적으로, 파일 공유 장치(110)는 제1 릴레이 서버와 제2 릴레이 서버를 동일하게 결정한 경우에, 제2 단말(140)에 대상 파일이 다운로드 가능하도록 다운로드 절차를 개시할 수 있다. 즉, 제1 릴레이 서버이면서 제2 릴레이 서버로 결정된 릴레이 서버는, 제1 단말(130)로부터 대상 파일을 업로드 받는 동시에 제2 단말에 대상 파일을 다운로드할 수 있다.
제1 릴레이 서버와 제2 릴레이 서버가 상이하면(S522), 중계 요청이 제1 릴레이 서버에 전송될 수 있다(S524). 제1 릴레이 서버와 제2 릴레이 서버가 상이하면 릴레이 서버 간의 대상 파일의 전송이 요구될 수 있다. 구체적으로, 파일 공유 장치(110)는 제1 릴레이 서버와 제2 릴레이 서버 간의 대상 파일의 전송을 지시하는 중계 요청을 생성하고, 그 중계 요청을 제1 릴레이 서버에 전송할 수 있다.
중계 요청과 관련하여, 일 실시예에서, 파일 공유 장치(110)는 전송 시간 합계에 기초하여, 제2 단말(140)에 대상 파일을 다운로드할 제2 릴레이 서버를 복수의 릴레이 서버에 포함된 어느 하나의 릴레이 서버로 변경할 수 있다. 전송 시간 합계는, 중계 요청에 따른 릴레이 서버 간의 대상 파일의 전송 시간과 릴레이 서버와 제2 단말(140) 간의 대상 파일의 전송 시간을 합한 값을 의미할 수 있다. 구체적인 예를 들어, 제3 릴레이 서버가 제2 단말(140)과 지리적 위치는 최소는 아니지만 전송 시간 합계가 최소라면, 파일 공유 장치(110)는 대상 파일을 다운로드 할 릴레이 서버를 제2 릴레이 서버에서 제3 릴레이 서버로 변경할 수 있다. 다시 말해, 파일 공유 장치(110)는 대상 파일의 다운로드에 소요되는 시간을 최소로 할 수 있는 릴레이 서버(예: 제3 릴레이 서버)를, 대상 파일을 다운로드 할 릴레이 서버로 결정할 수 있다.
도 6은 도 3을 참조하여 설명된 다운로드 절차의 개시 동작(S350)의 세부 동작을 나타내는 순서도를 도시한다. 도 6에 도시된 S600 동작은 다운로드 절차의 개시 동작(S350)의 세부 동작으로서, 제1 단말(130)과 제2 단말(140) 사이의 P2P 통신에 관한 동작으로 이해될 수 있다.
제1 단말(130)과 제2 단말(140)이 동일 네트워크에 연결된 경우(S610), 업로드 절차를 수행함과 동시에, 제1 단말(130)과 제2 단말(140) 간의 P2P 통신을 통한 대상 파일의 전송을 지시하는 명령이 생성될 수 있고(S620), 그 명령이 제1 단말(130) 또는 제2 단말(140)에 전송될 수 있다(S630). 구체적으로, 파일 공유 장치(110)는 제1 단말(130)과 제2 단말(140)의 IP를 조회함으로써, 제1 단말(130)과 제2 단말(140)이 동일 네트워크이지 여부를 판정할 수 있다. 또한, 파일 공유 장치(110)는 제1 단말(130)과 관계된 업로드 절차를 수행함과 동시에, 제1 단말(130)과 제2 단말(140)이 P2P 통신을 통해 대상 파일을 공유하도록 하는 명령을 생성할 수 있다. 또한, 파일 공유 장치(110)는 그 명령을 제1 단말(130) 또는 제2 단말(140)에 전송할 수 있다.
동일 네트워크란, 제1 단말(130)과 제2 단말(140)이 동일한 공유기를 통해 연결되어 있는 경우거나 동일한 계통의 공유기를 통해 실질적으로 하나의 공유기를 통해 연결되어 있다고 볼 수 있는 경우를 의미할 수 있다.
본 동작에 따르면, P2P 통신이 일반적으로 릴레이 서버를 경유하는 통신보다 대상 파일의 전송 속도에 있어 유리할 수 있으므로, 파일 공유 장치(110)는 제1 단말(130)과 제2 단말(140) 간의 신속한 파일 전송을 위해 P2P 통신을 유도할 수 있다.
P2P 통신과 관련하여, 일 실시예에서, 제1 단말(130)과 제2 단말(140) 사이의 테스트(예: 핑(ping) 테스트 등)에 기초하여, 제1 단말(130)과 제2 단말(140) 간의 P2P 통신을 통한 대상 파일의 전송을 지시하는 명령이 생성될 수 있다. 즉, 제1 단말(130)과 제2 단말(140)이 동일 네트워크에 연결되어 있지는 않으나, P2P 통신을 수행하기에 적합한 네트워크 성능을 보유하고 있는 경우, 파일 공유 장치(110)는 P2P 통신을 통해 보다 신속하게 파일 전송이 가능하도록 제1 단말(130) 또는 제2 단말(140)에 P2P 통신에 관계된 명령을 전송할 수 있다.
도 7은 본 개시의 또 다른 일 실시예에 따른 방법을 나타내는 순서도를 도시한다. 도 7에 도시된 방법은, 다운로드 절차의 정지를 유발하는 정지 이벤트와 관련된 일련의 동작들에 관한 것으로 이해될 수 있다.
다운로드 절차의 정지를 유발하는 정지 이벤트의 발생이 탐지될 수 있다(S710). 구체적으로, 파일 공유 장치(110)는 릴레이 서버(120) 또는 사용자 단말(130, 140)로부터 획득되는 각종 정보를 가공함으로써, 다운로드 절차의 정지를 유발하는 정지 이벤트의 발생을 탐지할 수 있다.
정지 이벤트와 관련하여, 일 실시예에서, 정지 이벤트는 업로드 절차에서 업로드가 완료된 대상 파일의 사이즈(제1 사이즈)와 다운로드 절차에서 다운로드가 완료된 대상 파일의 사이즈(제2 사이즈)에 기초하여 탐지될 수 있다. 예를 들어, 제1 사이즈와 제2 사이즈가 동일한 경우, 제2 단말(140)에 더 이상 다운로드할 대상 파일의 부분이 남아있지 않으므로, 파일 공유 장치(110)는 정지 이벤트를 탐지할 수 있다. 다른 예를 들어, 제2 사이즈가 제1 사이즈의 X%(X는 양의 실수)를 초과한 경우, 파일 공유 장치(110)는 정지 이벤트를 탐지할 수도 있다. 즉, 파일 공유 장치(110)는 제1 사이즈와 제2 사이즈의 비교에 기초하여 정지 이벤트를 탐지할 수 있다.
정지 이벤트와 관련하여, 다른 일 실시예에서, 정지 이벤트는 제1 단말로부터의 업로드 절차의 정지에 기초하여 탐지될 수 있다. 업로드 절차가 정지된 경우라면, 대상 파일의 완결성을 보장할 수 없는 경우가 있으므로, 다운로드 절차의 지속이 무용할 수 있다. 따라서, 파일 공유 장치(110)는 업로드 절차의 정지에 기초하여 정지 이벤트를 탐지할 수 있다.
정지 이벤트와 관련하여, 또 다른 일 실시예에서, 정지 이벤트는 제1 단말로부터의 업로드 절차의 업로드 속도에 기초하여 탐지될 수 있다. 예를 들어, 업로드 절차의 업로드 속도가 Y bps(Y는 양의 실수) 이하인 경우, 파일 공유 장치(110)는 정지 이벤트를 탐지할 수 있다. 즉, 업로드 속도가 특정 속도 이하인 경우 대상 파일의 완결성을 보장할 수 없는 가능성이 높으므로, 파일 공유 장치(110)는 업로드 절차의 업로드 속도에 기초하여 정지 이벤트를 탐지할 수 있다.
정지 이벤트와 관련하여, 또 다른 일 실시예에서, 정지 이벤트는 제2 단말로의 다운로드 절차의 다운로드 속도에 기초하여 탐지될 수 있다. 예를 들어, 다운로드 절차의 다운로드 속도가 Z bps(Z는 양의 실수) 이하인 경우, 파일 공유 장치(110)는 정지 이벤트를 탐지할 수 있다. 즉, 다운로드 속도가 특정 속도 이하인 경우 다운로드 절차를 지속할 수 없는 가능성이 높으므로, 파일 공유 장치(110)는 다운로드 절차의 다운로드 속도에 기초하여 정지 이벤트를 탐지할 수 있다.
정지 이벤트의 발생에 기초하여, 다운로드 절차가 정지될 수 있다(S720). 구체적으로, 파일 공유 장치(110)는 정지 이벤트의 발생에 기초하여 다운로드 절차를 정지할 수 있다. 다운로드 절차의 정지는 일정 기간의 휴지기를 갖는 제1 정지와 영구적으로 다운로드 절차가 취소되는 제2 정지로 구분될 수 있다. 파일 공유 장치(110)의 운영 주체는, 사용자 단말(130, 140)의 리소스를 절약하면서도 파일의 완결성을 보장할 수 있는 방식으로, 본 동작에 따른 정지를 제1 정지 또는 제2 정지로 결정할 수 있다. 만약, 특정 정지가 제1 정지로 결정된 경우라면, 그 특정 정지에 관계된 정지 이벤트가 해소되는 경우, 다운로드 절차가 재개될 수 있다.
도 7을 참조하여 지금까지 설명된 방법에 따르면, 대상 파일의 완결성을 보장하면서도 신속하게 대상 파일이 전송될 수 있다. 만약, 대상 파일의 완결성을 보장할 수 없는 경우라면 무용한 리소스의 낭비가 방지될 수 있고, 파일 전송에 관한 리소스의 과부하로 인해 업로드 속도 또는 다운로드 속도가 저하된 경우라면 해당 절차의 정지를 통해 그 과부하가 해소될 수 있다.
도 8은 본 개시의 또 다른 일 실시예에 따른 방법을 나타내는 순서도를 도시한다. 도 8에 도시된 방법은, 통신 경로의 수정을 유발하는 수정 이벤트와 관련된 일련의 동작들에 관한 것으로 이해될 수 있다.
통신 경로의 수정을 유발하는 수정 이벤트의 발생이 탐지될 수 있다(S810). 구체적으로, 파일 공유 장치(110)는 릴레이 서버(120) 또는 사용자 단말(130, 140)로부터 획득되는 각종 정보를 가공함으로써, 통신 경로의 수정을 유발하는 수정 이벤트를 탐지할 수 있다. 통신 경로란, 제1 단말(130), 하나 이상의 릴레이 서버 및 제2 단말(140)을 경유하는 대상 파일의 전송 경로로 이해될 수 있다.
수정 이벤트와 관련하여, 일 실시예에서, 수정 이벤트는 업로드 절차의 진행률에 기초하여 탐지될 수 있다. 예를 들어, 업로드 절차의 진행률이 기준 시간 이내에 기준 비율만큼 증가되지 않는 경우에 수정 이벤트가 탐지될 수 있다. 이와 같은 기준 시간 또는 기준 비율은, 실제 구현 사례에 따라 얼마든지 변경될 수 있다. 즉, 업로드 절차의 진행률이 특정 속도 이하인 경우, 상대적으로 신속하게 대상 파일을 전송할 수 있는 통신 경로가 존재할 가능성이 높으므로, 파일 공유 장치(110)는 업로드 절차의 진행률에 기초하여 수정 이벤트를 탐지할 수 있다. 업로드 절차의 진행률은, 업로드 절차의 업로드 속도 등 실질적으로 동일하게 볼 수 있는 다른 수치로 대체되어 탐지될 수도 있다.
수정 이벤트와 관련하여, 다른 일 실시예에서, 수정 이벤트는 다운로드 절차의 다운로드 속도에 기초하여 탐지될 수 있다. 즉, 다운로드 절차의 다운로드 속도가 특정 속도 이하인 경우, 상대적으로 신속하게 대상 파일을 전송할 수 있는 통신 경로가 존재할 가능성이 높으므로, 파일 공유 장치(110)는 다운로드 절차의 다운로드 속도에 기초하여 수정 이벤트를 탐지할 수 있다.
수정 이벤트와 관련하여, 또 다른 일 실시예에서, 수정 이벤트는 업로드 절차에서 업로드가 완료된 대상 파일의 사이즈(제1 사이즈)와 다운로드 절차에서 다운로드가 완료된 대상 파일의 사이즈(제2 사이즈)의 비교에 기초하여 탐지될 수 있다. 구체적으로, 파일 공유 장치(110)는 제1 사이즈와 제2 사이즈를 비교하고, 제1 사이즈와 제2 사이즈의 차이가 기준 크기 이내이면, 수정 이벤트를 탐지할 수 있다. 이러한 기준 크기는, 실제 구현 사례에 따라 얼마든지 변경될 수 있다. 본 동작에 따라, 제1 사이즈와 제2 사이즈의 차이가 기준 크기 이내에 도달한 경우는, 업로드 속도와 다운로드 속도의 불균형이 발생한 경우로도 이해될 수 있으므로, 파일 공유 장치(110)는 이 이벤트를 통신 경로를 수정하는 이벤트로 탐지함으로써, 통신 경로를 수정할 수 있다.
수정 이벤트의 발생에 기초하여, 통신 경로가 수정될 수 있다(S820). 구체적으로, 파일 공유 장치(110)는 수정 이벤트의 발생에 기초하여 통신 경로를 수정할 수 있다. 본 동작에 따르면, 업로드 절차의 업로드 속도 또는 다운로드 절차의 다운로드 속도를 최소로 할 수 있는 통신 경로로 대상 파일의 전송의 경로가 수정될 수 있다.
도 8을 참조하여 지금까지 설명된 방법에 따르면, 대상 파일의 업로드 또는 다운로드 중에도, 대상 파일을 신속하게 전송할 수 있는 통신 경로를 탐색함으로써, 해당 통신 경로로 대상 파일의 전송에 관한 통신 경로를 수정할 수 있다. 이에 따라, 업로드 속도 또는 다운로드 속도가 저하된 경우라도, 수정된 통신 경로를 통해 대상 파일을 신속하게 전송할 수 있다.
본 개시의 순서도에서, 방법 또는 알고리즘의 각 단계들은 순차적인 순서로 설명되었지만, 각 단계들은 순차적으로 수행되는 것 외에, 임의로 조합될 수 있는 순서에 따라 수행될 수도 있다. 본 개시의 순서도에 관한 설명은, 방법 또는 알고리즘에 변화 또는 수정을 가하는 것을 제외하지 않으며, 임의의 단계가 필수적이거나 바람직하다는 것을 의미하지 않는다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 다른 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
본 개시의 다양한 실시예는 컴퓨팅 장치가 읽을 수 있는 저장매체(MRSM, Machine-Readable Storage Medium)에 소프트웨어로 구현될 수 있다. 소프트웨어는 본 개시의 다양한 실시예를 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예로부터 추론될 수 있다. 예를 들어 소프트웨어는 컴퓨팅 장치가 읽을 수 있는 명령을 포함하는 컴퓨터 프로그램일 수 있다. 컴퓨팅 장치는 저장 매체로부터 호출된 명령에 따라 동작이 가능한 장치로서, 예를 들어 전자 장치와 상호 교환적으로 지칭될 수 있다. 일 실시예에서, 컴퓨팅 장치의 프로세서는 호출된 명령을 실행하여, 컴퓨팅 장치의 구성요소들이 이 명령에 대응하는 기능을 수행하게 할 수 있다. 저장 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체를 의미할 수 있다. 저장 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크 또는 광 데이터 저장장치 등을 포함할 수 있다. 일 실시예에서, 저장매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수 있다. 이때, 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 다른 일 실시예에서, 저장 매체는 비일시적(non-transitory) 저장매체일 수 있다. 비일시적 저장매체는, 데이터가 반영구적 또는 임시적으로 저장되는 것과 무관하게 실재하는 매체를 의미하며, 일시적(transitory)으로 전파되는 신호를 포함하지 않는다.
이하에서는, 본 개시의 다양한 실시예에 대해서 부기한다.
[부기 1]
네트워크와 통신이 가능하도록 구성된 통신 인터페이스;
하나 이상의 인스트럭션(instruction)을 포함하는 컴퓨터 프로그램을 실행하도록 구성된 프로세서; 및
상기 컴퓨터 프로그램을 로드(load)하도록 구성된 메모리를 포함하고,
상기 컴퓨터 프로그램이 상기 프로세서에 의해 실행될 시, 상기 프로세서는,
제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하고,
상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하고,
상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부에 대해 업로드가 완료된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키고,
상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하고,
상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시하는, 전자 장치.
[부기 2]
부기 1의 전자 장치이고,
상기 프로세서는,
상기 업로드 요청에 응답하여, 상기 제1 단말의 지리적 위치에 기초하여, 상기 대상 파일을 업로드할 제1 릴레이 서버를 결정한다.
[부기 3]
부기 2의 전자 장치이고,
상기 프로세서는,
상기 다운로드 요청에 응답하여, 상기 제2 단말의 지리적 위치에 기초하여, 상기 대상 파일의 다운로드를 위한 제2 릴레이 서버를 결정하고,
상기 제2 릴레이 서버와 상기 제1 릴레이 서버가 동일하면, 상기 다운로드 절차를 개시하고,
상기 제2 릴레이 서버와 상기 제1 릴레이 서버가 상이하면, 상기 제1 릴레이 서버가 상기 제2 릴레이 서버에 상기 업로드 절차가 진행 중인 상기 대상 파일을 전송하도록 하는 중계 요청을 상기 제1 릴레이 서버에 전송한다.
[부기 4]
부기 1 내지 3의 전자 장치이고,
상기 프로세서는,
상기 다운로드 권한의 활성화에 대응하여 생성된 상기 대상 파일의 다운로드를 위한 링크를 통해, 상기 제2 단말로부터 상기 다운로드 요청을 획득한다.
[부기 5]
부기 1 내지 4의 전자 장치이고,
상기 프로세서는,
상기 다운로드 권한의 활성화에 대응하여 생성된 상기 대상 파일의 다운로드를 위한 핀 번호를 통해, 상기 제2 단말로부터 상기 다운로드 요청을 획득한다.
[부기 6]
부기 1 내지 5의 전자 장치이고,
상기 대상 파일은,
상기 대상 파일의 일부인 제1 청크 및 상기 제1 청크와 구별되는 제2 청크를 포함하고,
상기 프로세서는,
상기 업로드 절차의 개시에 따라 상기 제1 청크의 업로드가 완료된 경우, 상기 다운로드 권한을 활성화시킨다.
[부기 7]
부기 6의 전자 장치이고,
상기 다운로드 절차는,
상기 업로드 절차에서 상기 제1 청크가 상기 제2 청크보다 선행하여 업로드가 완료되면, 상기 제1 청크가 상기 제2 청크보다 선행하여 다운로드가 개시되는 절차이다.
[부기 8]
부기 1 내지 7의 전자 장치이고,
상기 다운로드 절차는,
상기 업로드 절차에서 업로드가 완료된 상기 대상 파일의 사이즈와 동일한 사이즈에 대해 상기 제2 단말에 다운로드가 완료되면, 정지되는 절차이다.
[부기 9]
부기 1 내지 8의 전자 장치이고,
상기 다운로드 절차는,
상기 제1 단말로부터, 상기 업로드 절차가 정지되면, 정지되는 절차이다.
[부기 10]
부기 1 내지 9의 전자 장치이고,
상기 업로드 요청은,
상기 대상 파일의 사이즈 정보를 포함하고,
상기 프로세서는,
상기 사이즈 정보에 기초하여, 상기 업로드 절차의 상기 진행률을 판정한다.
[부기 11]
부기 1 내지 10의 전자 장치이고,
상기 프로세서는,
상기 업로드 절차의 상기 진행률이 기준 시간 내에 기준 비율만큼 증가되지 않으면, 상기 업로드 절차에 대응되는 통신 경로를 수정한다.
[부기 12]
부기 1 내지 11의 전자 장치이고,
상기 프로세서는,
상기 업로드 절차에서 업로드가 완료된 상기 대상 파일의 제1 사이즈와 상기 다운로드 절차에서 다운로드가 완료된 상기 대상 파일의 제2 사이즈를 비교하고,
상기 제1 사이즈와 상기 제2 사이즈의 차이가 기준 크기 이내이면, 상기 업로드 절차에 대응되는 통신 경로를 수정한다.
[부기 13]
부기 1 내지 12의 전자 장치이고,
상기 프로세서는,
상기 제1 단말과 상기 제2 단말이 동일한 네트워크에 연결되어 있는 경우, 상기 업로드 절차를 수행함과 동시에, 상기 제1 단말과 상기 제2 단말 간의 P2P(Peer to Peer) 통신을 통한 상기 대상 파일의 전송을 지시하는 명령을 생성한다.
[부기 14]
컴퓨터 상에서 수행하기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가,
제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하는 동작;
상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하는 동작;
상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부가 업로드된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키는 동작;
상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하는 동작; 및
상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시하는 동작을 수행하도록 하는 실행 가능한 명령을 포함하는, 컴퓨터 판독 가능한 기록 매체.
[부기 15]
제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하는 동작;
상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하는 동작;
상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부가 업로드된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키는 동작;
상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하는 동작; 및
상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시하는 동작을 포함하는, 방법.
이상 다양한 실시예에 의해 본 개시에 따른 기술적 사상이 설명되었지만, 본 개시에 따른 기술적 사상은 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다.
Claims (15)
- 네트워크와 통신이 가능하도록 구성된 통신 인터페이스;하나 이상의 인스트럭션(instruction)을 포함하는 컴퓨터 프로그램을 실행하도록 구성된 프로세서; 및상기 컴퓨터 프로그램을 로드(load)하도록 구성된 메모리를 포함하고,상기 컴퓨터 프로그램이 상기 프로세서에 의해 실행될 시, 상기 프로세서는,제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하고,상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하고,상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부에 대해 업로드가 완료된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키고,상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하고,상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시하는, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 업로드 요청에 응답하여, 상기 제1 단말의 지리적 위치에 기초하여, 상기 대상 파일을 업로드할 제1 릴레이 서버를 결정하는, 전자 장치.
- 제2항에 있어서,상기 프로세서는,상기 다운로드 요청에 응답하여, 상기 제2 단말의 지리적 위치에 기초하여, 상기 대상 파일의 다운로드를 위한 제2 릴레이 서버를 결정하고,상기 제2 릴레이 서버와 상기 제1 릴레이 서버가 동일하면, 상기 다운로드 절차를 개시하고,상기 제2 릴레이 서버와 상기 제1 릴레이 서버가 상이하면, 상기 제1 릴레이 서버가 상기 제2 릴레이 서버에 상기 업로드 절차가 진행 중인 상기 대상 파일을 전송하도록 하는 중계 요청을 상기 제1 릴레이 서버에 전송하는, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 다운로드 권한의 활성화에 대응하여 생성된 상기 대상 파일의 다운로드를 위한 링크를 통해, 상기 제2 단말로부터 상기 다운로드 요청을 획득하는, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 다운로드 권한의 활성화에 대응하여 생성된 상기 대상 파일의 다운로드를 위한 핀 번호를 통해, 상기 제2 단말로부터 상기 다운로드 요청을 획득하는, 전자 장치.
- 제1항에 있어서,상기 대상 파일은,상기 대상 파일의 일부인 제1 청크 및 상기 제1 청크와 구별되는 제2 청크를 포함하고,상기 프로세서는,상기 업로드 절차의 개시에 따라 상기 제1 청크의 업로드가 완료된 경우, 상기 다운로드 권한을 활성화시키는, 전자 장치.
- 제6항에 있어서,상기 다운로드 절차는,상기 업로드 절차에서 상기 제1 청크가 상기 제2 청크보다 선행하여 업로드가 완료되면, 상기 제1 청크가 상기 제2 청크보다 선행하여 다운로드가 개시되는 절차인, 전자 장치.
- 제1항에 있어서,상기 다운로드 절차는,상기 업로드 절차에서 업로드가 완료된 상기 대상 파일의 사이즈와 동일한 사이즈에 대해 상기 제2 단말에 다운로드가 완료되면, 정지되는 절차인, 전자 장치.
- 제1항에 있어서,상기 다운로드 절차는,상기 제1 단말로부터, 상기 업로드 절차가 정지되면, 정지되는 절차인, 전자 장치.
- 제1항에 있어서,상기 업로드 요청은,상기 대상 파일의 사이즈 정보를 포함하고,상기 프로세서는,상기 사이즈 정보에 기초하여, 상기 업로드 절차의 상기 진행률을 판정하는, 전자 장치.
- 제10항에 있어서,상기 프로세서는,상기 업로드 절차의 상기 진행률이 기준 시간 내에 기준 비율만큼 증가되지 않으면, 상기 업로드 절차에 대응되는 통신 경로를 수정하는, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 업로드 절차에서 업로드가 완료된 상기 대상 파일의 제1 사이즈와 상기 다운로드 절차에서 다운로드가 완료된 상기 대상 파일의 제2 사이즈를 비교하고,상기 제1 사이즈와 상기 제2 사이즈의 차이가 기준 크기 이내이면, 상기 업로드 절차에 대응되는 통신 경로를 수정하는, 전자 장치.
- 제1항에 있어서,상기 프로세서는,상기 제1 단말과 상기 제2 단말이 동일한 네트워크에 연결되어 있는 경우, 상기 업로드 절차를 수행함과 동시에, 상기 제1 단말과 상기 제2 단말 간의 P2P(Peer to Peer) 통신을 통한 상기 대상 파일의 전송을 지시하는 명령을 생성하는, 전자 장치.
- 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가,제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하는 동작;상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하는 동작;상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부가 업로드된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키는 동작;상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하는 동작; 및상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시하는 동작을 수행하도록 하는 실행 가능한 명령을 포함하는, 컴퓨터 판독 가능한 기록 매체.
- 제1 단말로부터 대상 파일의 업로드를 요청하는 업로드 요청을 획득하는 동작;상기 업로드 요청에 응답하여, 상기 대상 파일에 대한 업로드 절차를 개시하는 동작;상기 업로드 절차의 개시에 따라 상기 대상 파일의 일부가 업로드된 경우, 상기 대상 파일에 대한 다운로드를 허용케 하는 다운로드 권한을 활성화시키는 동작;상기 업로드 절차의 종료 전에, 상기 제1 단말과 구별되는 제2 단말로부터 상기 대상 파일의 다운로드를 요청하는 다운로드 요청을 획득하는 동작; 및상기 다운로드 요청에 응답하여, 상기 업로드 절차의 진행률에 따라 상기 제2 단말에 상기 대상 파일을 다운로드하기 위한 다운로드 절차를 개시하는 동작을 포함하는, 방법.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/KR2023/000854 WO2024154844A1 (ko) | 2023-01-18 | 2023-01-18 | 업로드와 다운로드의 동시적 수행 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/KR2023/000854 WO2024154844A1 (ko) | 2023-01-18 | 2023-01-18 | 업로드와 다운로드의 동시적 수행 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2024154844A1 true WO2024154844A1 (ko) | 2024-07-25 |
Family
ID=91955920
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2023/000854 Ceased WO2024154844A1 (ko) | 2023-01-18 | 2023-01-18 | 업로드와 다운로드의 동시적 수행 |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2024154844A1 (ko) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20170035314A (ko) * | 2016-03-07 | 2017-03-30 | 선샤인 앱 인코포레이티드 | p2p 연결을 이용한 클라우드 서비스 트래픽의 절감 방법 및 그 장치 |
| US20170250861A1 (en) * | 2016-02-29 | 2017-08-31 | Whatsapp Inc. | Techniques to provide relay server configuration for geographically disparate client devices |
| CN108234539A (zh) * | 2016-12-14 | 2018-06-29 | 北京金山云网络技术有限公司 | 一种文件上传、下载、传输方法及装置 |
| CN110120980A (zh) * | 2019-05-27 | 2019-08-13 | 牧星机器人(江苏)有限公司 | 非稳定链路的可靠文件传输方法、计算机设备及存储介质 |
| US10880376B1 (en) * | 2017-05-31 | 2020-12-29 | Amazon Technologies, Inc. | Downloading chunks of an object from a storage service while chunks of the object are being uploaded |
-
2023
- 2023-01-18 WO PCT/KR2023/000854 patent/WO2024154844A1/ko not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170250861A1 (en) * | 2016-02-29 | 2017-08-31 | Whatsapp Inc. | Techniques to provide relay server configuration for geographically disparate client devices |
| KR20170035314A (ko) * | 2016-03-07 | 2017-03-30 | 선샤인 앱 인코포레이티드 | p2p 연결을 이용한 클라우드 서비스 트래픽의 절감 방법 및 그 장치 |
| CN108234539A (zh) * | 2016-12-14 | 2018-06-29 | 北京金山云网络技术有限公司 | 一种文件上传、下载、传输方法及装置 |
| US10880376B1 (en) * | 2017-05-31 | 2020-12-29 | Amazon Technologies, Inc. | Downloading chunks of an object from a storage service while chunks of the object are being uploaded |
| CN110120980A (zh) * | 2019-05-27 | 2019-08-13 | 牧星机器人(江苏)有限公司 | 非稳定链路的可靠文件传输方法、计算机设备及存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2018076841A1 (zh) | 数据分享方法、装置、存储介质及服务器 | |
| WO2014007516A1 (ko) | 단일 인증 서비스 시스템 및 이의 운용 방법 | |
| WO2018076868A1 (zh) | 一种数据同步方法、装置、系统、存储介质和服务器 | |
| WO2011025253A2 (ko) | 블루투스 통신방법 및 이를 적용한 단말기 | |
| WO2018076889A1 (zh) | 数据备份的方法、装置、系统、存储介质及服务器 | |
| WO2016171401A1 (ko) | 공동 편집 문서를 공유하는 방법 및 장치 | |
| WO2018076819A1 (zh) | 数据的上传方法、装置、存储介质、电子设备及系统 | |
| WO2012124985A2 (en) | Method and apparatus for synchronizing personal inforamtion | |
| WO2014092389A1 (en) | Application execution method and apparatus | |
| WO2018076829A1 (zh) | 终端数据的处理方法、装置、系统、存储介质及服务器 | |
| WO2011129635A2 (ko) | 이동통신 시스템에서 응용 서비스를 제공하는 방법 및 장치 | |
| WO2018076869A1 (zh) | 一种数据备份方法、装置、存储介质和电子设备 | |
| WO2021141441A1 (ko) | 스크래핑 기반 서비스 제공 방법 및 이를 수행하는 어플리케이션 | |
| WO2018076873A1 (zh) | 数据分享方法、装置、介质、电子设备及系统 | |
| WO2020073615A1 (zh) | 设备软件的升级方法、数据转化器及可读存储介质 | |
| WO2019117561A1 (ko) | 외부 장치에 따라 다른 서비스를 제공하는 전자 장치 | |
| WO2016035979A1 (en) | Method and system for controlling operation of image forming apparatus by using wearable device | |
| WO2018076842A1 (zh) | 一种数据备份方法、装置、系统、存储介质及电子设备 | |
| WO2017222204A1 (ko) | 화상 형성 장치, 모바일 단말 및 그 장치들의 로컬 로그인 처리 방법 | |
| WO2015099472A1 (en) | Method for controlling data and electronic device thereof | |
| WO2024034946A1 (ko) | 멀티플랫폼 지원 애플리케이션 빌드 및 배포 시스템과 방법 | |
| WO2019164168A1 (ko) | 블루투스 통신을 사용하는 전자 장치와 이의 동작 방법 | |
| WO2024005444A1 (ko) | 가상 무선 접속 네트워크의 스케일링 제어 방법 및 전자 장치 | |
| WO2024154844A1 (ko) | 업로드와 다운로드의 동시적 수행 | |
| WO2020222347A1 (ko) | 가상 머신 배치 방법 및 이를 구현하는 가상 머신 배치 장치 |
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: 23917802 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 23917802 Country of ref document: EP Kind code of ref document: A1 |