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

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

Info

Publication number
WO2015011757A1
WO2015011757A1 PCT/JP2013/069774 JP2013069774W WO2015011757A1 WO 2015011757 A1 WO2015011757 A1 WO 2015011757A1 JP 2013069774 W JP2013069774 W JP 2013069774W WO 2015011757 A1 WO2015011757 A1 WO 2015011757A1
Authority
WO
WIPO (PCT)
Prior art keywords
size
client device
screen
value
transmission
Prior art date
Application number
PCT/JP2013/069774
Other languages
English (en)
French (fr)
Inventor
島田大地
佐沢真一
橋間正芳
佐藤裕一
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to CN201380078237.5A priority Critical patent/CN105393231A/zh
Priority to PCT/JP2013/069774 priority patent/WO2015011757A1/ja
Priority to EP13890240.8A priority patent/EP3026566A4/en
Priority to JP2015528027A priority patent/JP5994944B2/ja
Publication of WO2015011757A1 publication Critical patent/WO2015011757A1/ja
Priority to US14/993,023 priority patent/US20160127213A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Definitions

  • the present invention relates to an information processing apparatus, method, and program.
  • a virtual desktop environment is arranged on the server device (hereinafter referred to as a virtual desktop).
  • the client device can access the server remotely and use the virtual desktop provided by using the computing resource of the server device.
  • services that provide remote desktops are also attracting attention from the perspective of data security measures and the cost of PC operation management.
  • the round-trip delay time which is the time it takes for a response to return after sending a signal or data to the communication partner, is the physical distance to the partner and the relay / transfer on the route. It depends on the number of devices to be used. For example, the round trip delay time of the path between the transmission-side communication device and the reception-side communication device becomes longer as the distance between the transmission-side communication device and the reception-side communication device is longer.
  • TCP that guarantees the arrival of data by an acknowledgment
  • ACK acknowledgment
  • the time until the acknowledgment returns is delayed as the round trip delay time increases. As a result, the waiting time increases and the communication throughput decreases.
  • a moving image information transmission method and apparatus that reduce or prevent information loss and transmission information delay due to non-uniform transmission amount of a transmission path for transmitting moving image information from a server device to a client device are provided.
  • the technology to do is known.
  • a technique for reducing transmission error of moving image data is also known. (For example, see Patent Document 1 and Patent Document 2)
  • the server device transmits image data obtained by capturing the screen of the virtual desktop to the client device.
  • the client device displays the received image data on the display screen.
  • the user of the client device can grasp the state of the virtual desktop from the image data displayed on the display screen.
  • the client device notifies the server device of an operation input by the user to the virtual desktop.
  • the server device updates the screen of the virtual desktop according to the input user operation. Therefore, the desktop environment can be used even for a client device in which the desktop environment is not arranged.
  • the communication speed affects the update interval of the remote desktop screen in the client device. And, if the screen update interval becomes longer, the usability of the remote desktop is reduced.
  • the method executed by the information processing apparatus includes the steps of calculating, setting to an empty size, setting as a transmission interval, subtracting, and adding.
  • a buffer size of a buffer included in the client device is calculated by multiplying a bandwidth available for communication with the client device by a round-trip delay time of communication.
  • the real number obtained by dividing the buffer size by the transmission data size set for the client device is converted to an integer to calculate an integer value, and the integer value is set to the empty size.
  • a value obtained by dividing the round trip delay time by an integer value or a value obtained by dividing the transmission data size by the band is set as the transmission interval.
  • the subtracting step determines whether the empty size is larger than the first value every time the transmission interval elapses, and generates image data of the remote desktop screen if larger than the first value. Transmit to client device and subtract second value from empty size.
  • the adding step adds the second value to the empty size every time a response to the image data transmitted in the subtracting step is received from the client device.
  • a virtual desktop environment is arranged in the server device.
  • the server device transmits image data obtained by capturing the screen of the virtual desktop to the client device.
  • capturing the virtual desktop screen may mean, for example, that the server device generates image data of the virtual desktop screen.
  • the client device receives image data from the server device, the client device returns an acknowledgment (ACK: ACKnowledgement), which is a signal indicating that the image data has been received, to the server device.
  • ACK acknowledgment
  • the client device displays the received image data on, for example, a display screen of a display device included in the client device, so that the state of the virtual desktop of the server device is displayed on the display screen of the client device.
  • the server device When the server device receives the positive response from the client device, the server device transmits image data of the next screen obtained by capturing the virtual desktop screen again to the client device.
  • the user can confirm the screen state of the virtual desktop on the display screen of the client device, and can operate the virtual desktop on the client device.
  • FIG. 1 is a diagram illustrating a flow of data transmission / reception between a server device and a client device in the system for providing a remote desktop exemplified above.
  • a notation such as “screen n” with a number n after the term “screen” is used.
  • the number n attached represents the time-series order in which the screen is captured by the server device. For example, “screen 1” to which the number “1” is added represents a virtual desktop screen captured first by the server device after a certain point in time. “Screen 2” represents a screen captured by the server device after “Screen 1”.
  • image data obtained by capturing a screen is referred to as screen data. Furthermore, when the image data of the screen captured by the server device nth from a certain time point is indicated, it is expressed as “screen n data”. That is, “screen 1 data” is image data obtained by capturing “screen 1”. “Screen 2 data” is image data obtained by capturing “Screen 2”.
  • the server device when the server device starts providing the remote desktop to the client device, the server device captures the screen (screen 1) of the virtual desktop and acquires the image data (screen 1 data) (( 1)). The server device performs, for example, compression processing on the captured screen 1 data, and then transmits the screen 1 data to the client device ((2) in FIG. 1). When the client device receives the screen 1 data, the client device returns an acknowledgment, which is a signal indicating that the screen 1 data has been received, to the server device ((3) in FIG. 1). Subsequently, the client device provides the screen displayed on the virtual desktop to the user by displaying the received screen 1 data on, for example, the display screen of the display device included in the client device ((4) in FIG. 1). .
  • the server device When the server device receives the positive response from the client device, it captures the screen of the virtual desktop again and acquires the image data (screen 2 data) of the next screen (screen 2) ((5) in FIG. 1). As in the case of the screen 1, the server device performs, for example, a compression process on the captured screen 2 data of the screen 2, and then transmits the screen 2 data to the client device ((6) in FIG. 1). When the client device receives the screen 2 data, the client device returns an acknowledgment indicating that the screen 2 data has been received normally ((7) in FIG. 1), and the client device receives the received screen 2 data, for example. They are displayed on the display screen of the display device provided ((8) in FIG. 1). For example, by repeating the above processing, the screen displayed on the virtual desktop of the server device is sequentially displayed on the display screen of the client device, thereby providing a remote desktop environment.
  • the server device generates and transmits the next screen image data after confirming that the transmitted screen image data has been normally received by the client device by an affirmative response. . Therefore, the image data of the screen is displayed on the display screen of the client device in the same order as the order of the screen captured by the server device, and the user knows the temporal change of the screen of the virtual desktop on the display screen of the client device. Can do. Therefore, for example, the user can know a response to his / her operation performed on the virtual desktop on the display screen of the client device.
  • the round-trip delay time is directly reflected in the screen update interval. For this reason, in a network environment having a long round trip delay time, the responsiveness to the user's operation is significantly lowered.
  • the responsiveness to the user's operation is, for example, the time until the operation is reflected on the display screen of the client device when the user operates the mouse or keyboard (for example, movement of the cursor or input of characters). Yes, the shorter this time, the higher the response.
  • FIG. 2 is a diagram illustrating a flow of data transmission / reception when the server device transmits image data of the next screen without waiting for an acknowledgment response from the client device.
  • the server device when the server device starts providing the remote desktop to the client device, the server device captures the screen of the virtual desktop and acquires screen 1 data that is image data of the screen 1 ((1) in FIG. 2). . Then, the server device performs, for example, compression processing on the acquired screen 1 data, and then transmits the screen 1 data to the client device ((2) in FIG. 2). Subsequently, the server device captures the screen of the next virtual desktop and acquires screen 2 data that is image data of screen 2 without waiting for reception of an acknowledgment from the client device for the transmitted screen 1 data ( (3) in FIG.
  • the server device performs, for example, compression processing on the acquired screen 2 data, and then transmits the screen 2 data to the client device ((4) in FIG. 2). Thereafter, the server device captures the screen of the virtual desktop at a predetermined time interval without performing the reception of an acknowledgment from the client device with respect to the transmitted image data, performs the compression process, etc., and then stores the image data. Sequentially sent to client devices.
  • the client device when the client device receives the screen 1 data transmitted from the server device, the client device returns an acknowledgment, which is a signal indicating that it has been successfully received, to the server device ((5) in FIG. 2). Subsequently, the client device displays the received screen 1 data on, for example, a display screen of a display device included in the client device ((6) in FIG. 2). Similarly, when receiving the screen 2 data, the client device returns an acknowledgment indicating that it has been successfully received to the server device ((7) in FIG. 2), and displays the received screen 2 data on the display screen. ((8) in FIG. 2). Thereafter, when receiving the image data transmitted from the server device, the client device returns an acknowledgment to the received image data to the server device, and sequentially displays the received image data on the display screen.
  • the server device transmits an image captured on the screen without waiting for an acknowledgment from the client device to the client device. Therefore, even when the round-trip delay time is long, the image data update interval in the client device Can be prolonged.
  • the server device When the server device is configured to transmit screen data without waiting for an acknowledgment from the client device, the order in which the screen data is actually captured and received by the client device depending on the transmission method.
  • the order may change. That is, for example, in FIG. 2, screen 2 data transmitted later than screen 1 data transmitted earlier may be received earlier by the client device.
  • the screen data In the remote desktop, it is preferable that the screen data is also displayed on the client device in the order of the screens captured on the server device. For example, it is assumed that the user performs an operation of moving the mouse cursor. In this case, if the order of the captured screen data is changed and displayed, there is a problem that the cursor appears to move in the direction opposite to the direction of movement of the cursor actually moved. End up.
  • the client device is provided with a buffer for storing image data received from the server device. Then, the server device adds a serial number indicating the order in which the screens are captured to the image data to be transmitted, and transmits the image data to the client device. In the client device, the received screen data is stored in a buffer and displayed on the display screen of the display device according to the added serial number, so that the screen data can be displayed in order.
  • the size of the buffer of the client device is limited. For example, if more screen data than the number that can be stored in the buffer is transmitted, overflow may occur. is there. Alternatively, even if a buffer is used, there is a possibility that data exceeding the usable bandwidth may be transmitted from the server device to the client device. Therefore, for example, it is preferable to provide a mechanism for controlling the number of screen data transmissions from the server device to the client device so that these events do not occur.
  • FIG. 3 is a diagram illustrating the control of the number of screen data transmissions by dropping frames and sliding windows.
  • the sliding window is a mechanism for preparing a window (frame) of a certain size, transmitting screen data when the window has a space, and waiting for transmission until there is a space when there is no space.
  • an overflow can be suppressed by appropriately setting the window size and the buffer size.
  • the window size is set to 3 ((1) of FIG. 3). Therefore, the initial value of the window empty size is 3, which is equal to the window size value.
  • the server device transmits one screen data, 1 is subtracted from the empty size, and 1 is added to the empty size when an acknowledgment is received from the client device, so that the empty size of the window is updated.
  • the server device starts providing a remote desktop to the client device, the server device captures the screen of the virtual desktop and transmits the screen data to the client device.
  • the window empty size is decreased by one. That is, the window empty size is changed from 3 to 2 ((2) in FIG. 3).
  • the server device determines whether or not there is an empty window size each time a predetermined time interval elapses. If there is a vacancy (that is, the window vacancy size is not 0), the virtual desktop screen is captured and transmitted to the client device, and the window vacancy size is decremented by 1 each time. When the empty size of the window becomes 0 ((3) in FIG. 3), the server device does not transmit any more screen data, and the virtual desktop screen at the timing when the window is not transmitted drops frames (FIG. 3). (4)).
  • the server device when the server device receives an affirmative response from the client device, it increases the empty size of the window by 1 ((5) in FIG. 3). As a result, the window empty size is changed from 0 to 1. Since the empty size is no longer 0, the server device captures and transmits the screen to the client device at the transmission timing of the next screen, and decreases the empty size by one. As a result, the empty size becomes 0 again ((6) in FIG. 3). In the example of FIG. 3, since an acknowledgment is received before the transmission timing of the subsequent next screen ((7) of FIG. 3), the empty size of the window is 1 at the transmission timing of the next screen. Therefore, the server device captures the screen and transmits it to the client device, and decreases the empty size by 1 ((8) in FIG. 3).
  • the server device decreases the empty size by 1, and increases the empty size by 1 when an acknowledgment is received. If the empty size is not 0 at the transmission timing of the screen data, the screen data is transmitted, and if it is 0, the frame is dropped without transmitting the screen at the transmission timing. As a result, the number of screen data sent from the server device at the same time is controlled so as not to exceed the number of windows, so it is possible to prevent the client device from overflowing the buffer and sending screen data exceeding the available bandwidth. it can.
  • FIG. 4 is a diagram illustrating an example of a screen update interval.
  • the window size of the sliding window is set to 2 ((1) in FIG. 4). That is, the maximum value of the window empty size is 2.
  • the server device captures the virtual desktop screen at a predetermined time interval and transmits it to the client device, and decreases the empty size of the window by 1 each time it is transmitted. ((2) in FIG. 4).
  • the empty size of the window becomes 0, the screen at the transmission timing is dropped to the client device without being transmitted ((3) in FIG. 4).
  • the window empty size increases by one.
  • the server device captures the screen and transmits it to the client device, and again reduces the empty size of the window by 1 ((4) in FIG. 4). Thereafter, if the window empty size is 0 at the screen transmission timing, frames are dropped without performing transmission at that timing. Also, when an affirmative response is received from the client device, the window empty size is increased by one. If the window empty size is not 0 at the screen transmission timing, the screen is captured and screen data is transmitted to the client device at the screen transmission timing, and the window empty size is decreased by one. As described above, the image of the virtual desktop screen of the server device is provided to the client device. In this case, as shown in FIG. 4, there is a deviation in the display screen update interval in the client device. In other words, there are a period in which the update interval of the display screen is short and frequently updated, and a period in which the update interval of the display screen is not frequently updated.
  • FIG. 5 is a diagram illustrating the responsiveness of the display screen to an operation input by the user.
  • FIG. 5A shows a case where the user inputs an operation for changing the display content of the virtual desktop screen, for example, the movement of the mouse cursor, and the signal notifying the operation immediately before the server device transmits the screen 4 data. Shows an example when it is received by the server.
  • the screen of the virtual desktop is changed according to the operation content of the user, and the changed screen content is transmitted to the user by the screen 4 data captured at the transmission timing of the next screen 4 data. It will be.
  • the user operation is notified immediately after the server device transmits the screen 4 data.
  • the screen data transmission is dropped twice in succession.
  • the screen data reflecting the user's operation is transmitted from the server device to the client device at the transmission of the screen 5 data after the frame is dropped and the acknowledgment is received thereafter. It will be. Therefore, as compared with the case of FIG. 5A, in FIG. 5B, the time required for the user operation to be reflected on the display screen of the client device is significantly longer. Such deviation of the screen update interval is not preferable because it increases variation in responsiveness to user operations, for example. Therefore, in some embodiments, in order to make the transmission interval of the screen by the server device substantially constant, for example, the transmission interval of the screen data by the server device is set as follows.
  • the size of the buffer held by the application that constructs the remote desktop environment with the server device is calculated by the following equation.
  • Buffer size Usable bandwidth x Round trip time ... Equation 1
  • the buffer size is the buffer size of the buffer provided in the client device for storing the screen image data transmitted from the server device.
  • the server device may be provided with a buffer of the same size.
  • the usable bandwidth is a bandwidth that can be used in communication between the server device and the client device by an application that builds a remote desktop environment with the server device.
  • the round trip delay time is the time required for the round trip of communication between the server device and the client device.
  • the round trip delay time may be, for example, the time taken from when the server device transmits a packet to the client device until the response to the packet is notified from the client device to the server device. Alternatively, it may be the time taken from when the client device transmits a packet to the server device until a response to the packet is notified from the server device to the client device.
  • the window size may be set by the following formula.
  • the window size is the size of the window used in the above sliding window.
  • the buffer size the value calculated by Equation 1 is used.
  • the transmission data size may be, for example, a value estimated as the maximum data size of screen image data (screen data) transmitted by the server device.
  • the transmission data size is a value that can be set in advance based on, for example, the resolution of the display screen of the display device of the client device, the setting of the virtual desktop environment, the communication speed, and the like.
  • the transmission data size may be the maximum data size when image data is created in accordance with the resolution of the display screen of the display device included in the client device that is provided with the remote desktop.
  • the transmission data size As shown in the above formula 2, for example, when the buffer size is divided by the transmission data size, it is possible to estimate at least how many pieces of screen data are included in the buffer. .
  • the real floor function obtained by dividing the buffer size by the transmission data size is calculated to be an integer, and the integer value is calculated as the window size.
  • the transmission interval of the image data (screen data) obtained by capturing the screen by the server device may be set by the following equation.
  • the transmission interval is the transmission timing interval at which the server device captures the screen and transmits the screen data to the client device. For example, the server device checks whether the window empty size is 0 each time the transmission interval elapses. If it is not 0, the screen is captured and the screen data is transmitted to the client device, and the window size is decremented by 1. Note that the round-trip delay time and usable bandwidth shown in Expression 3 may be the same as those described in the description of Expression 1 above. The window size and the transmission data size may be the same as described in the description of Equation 2 above.
  • the round-trip delay time elapses before the next transmission timing when the window size becomes 0, and an affirmative response is returned. Therefore, the next screen can be transmitted without dropping frames, and the transmission interval of screen data by the server device can be made substantially uniform.
  • the screen update interval can be made substantially uniform even in the client device.
  • the transmission intervals calculated by Equations 1 to 3 are calculated so that the transmission intervals of the screen data are almost uniform, but the transmission intervals are as short as possible. For this reason, in the transmission interval calculated by Equations 1 to 3, it is suppressed that the transmission interval becomes longer than necessary in order to make the transmission interval substantially uniform.
  • FIG. 6 is a diagram illustrating that the shift of the screen update interval can be suppressed by using the transmission interval according to the embodiment described above.
  • 6A shows the same example as the data transmission / reception between the client device and the server device shown in FIG. 4 for comparison with FIG. 6B.
  • FIG. 6B is a diagram illustrating a screen update interval when the transmission interval according to the above-described embodiment is used.
  • FIG. 7 is a diagram illustrating that the responsiveness to the user operation on the screen can be improved by using the transmission interval according to the above-described embodiment.
  • FIG. 7A shows the same example as the responsiveness to the operation input by the user shown in FIG. 5B for comparison with FIG. 7B.
  • FIG. 7B is a diagram illustrating the responsiveness to the operation input by the user when the transmission interval according to the above-described embodiment is used.
  • the user operation is notified to the server apparatus immediately after the screen 4 data of the screen 4 is sent.
  • the window empty size is 0, and the transmission of the screen data is dropped twice before the subsequent acknowledgment is received.
  • the screen data reflecting the user's operation is transmitted from the server device to the client device only when the screen 5 data is transmitted after the acknowledgment is received.
  • FIG. 7A it takes time until the user's operation is reflected on the display screen of the client device.
  • FIG. 7B the user operation is notified to the server device immediately after the screen 4 data of the screen 4 is sent.
  • FIG. 7A it takes time until the user's operation is reflected on the display screen of the client device.
  • FIG. 8 is a diagram illustrating a virtual desktop screen of the server device and a display screen of the client device.
  • FIG. 8A illustrates a virtual desktop screen provided by the server device.
  • FIG. 8B illustrates a display screen of the client device that is updated at a certain update interval illustrated in FIG. 6A.
  • FIG. 8C illustrates the display screen of the client device that is updated at the update interval according to the embodiment illustrated in FIG.
  • FIG. 8A shows a state in which the object 800 moves from top to bottom on the virtual desktop screen, arranged in time series. Image data obtained by capturing this screen is transmitted to the client device.
  • FIGS. 8B and 8C show how the image data of the screen received from the server device is displayed on the display screen of the client device.
  • FIG. 8A illustrates a virtual desktop screen provided by the server device.
  • FIG. 8B illustrates a display screen of the client device that is updated at a certain update interval illustrated in FIG. 6A.
  • FIG. 8C illustrates the display screen of the
  • the screen update interval is substantially constant, and the change in the position of the object 800 can be obtained uniformly. Therefore, the user can easily confirm changes in the screen of the virtual desktop such as a response to his / her operation from changes in the screen data displayed on the display screen of the client device.
  • the screen update interval is uniform, it is easier for the user to recognize the influence (for example, the speed of cursor movement) on the display screen due to the operation input by the user from the response. Therefore, usability can be improved if the screen update interval is uniform.
  • the update interval can be made substantially constant while keeping the update interval of the screen as short as possible by using the transmission interval calculated by the above Equations 1 to 3.
  • FIG. 9 is a diagram illustrating a system 900 for providing a remote desktop according to an embodiment.
  • a system 900 includes a server device 901 and a client device 902, and the server device 901 and the client device 902 are connected by a network 903.
  • the client device 902 includes a display device 905 such as a display.
  • the client device 902 receives screen data, which is image data obtained by capturing a virtual desktop screen transmitted from the server device 901 via the network 903, and causes the display device 905 to display the screen data.
  • FIG. 10 is a diagram illustrating a functional block configuration of the server apparatus 901 according to the embodiment.
  • the server device 901 includes, for example, a control unit 1000 and a storage unit 1010.
  • the control unit 1000 of the server device 901 includes functional units 1001 such as a connection establishment unit 1011, a user operation reception unit 1012, a screen update unit 1013, a setting unit 1014, and a screen data acquisition unit 1015. Further, the control unit 1000 includes functional units 1001 such as a transmission permission determination unit 1016, a screen information transmission unit 1017, an adjustment unit 1018, and a transmission unit 1019, for example.
  • the storage unit 1010 of the server device 901 stores a program 1020, for example.
  • the control unit 1000 of the server apparatus 901 reads out and executes the program 1020, for example, as a functional unit 1001 such as a connection establishment unit 1011, a user operation reception unit 1012, a screen update unit 1013, a setting unit 1014, and a screen data acquisition unit 1015. Function.
  • the control unit 1000 of the server device 901 functions as a functional unit 1001 such as, for example, a transmission permission determination unit 1016, a screen information transmission unit 1017, an adjustment unit 1018, and a transmission unit 1019 by reading and executing the program 1020.
  • the transmission permission / inhibition determination unit 1016 and the screen information transmission unit 1017 also function as the transmission unit 1019.
  • connection establishment unit 1011 establishes a communication connection with the client device 902.
  • the user operation receiving unit 1012 receives a signal for notifying a user operation input from the client device 902 to the virtual desktop environment provided by the server device 901.
  • the screen update unit 1013 executes processing in accordance with the signal for notifying the user operation received by the user operation reception unit 1012 and updates the content displayed on the virtual desktop screen. Details of other functional units 1001 will be described later.
  • FIG. 11 is a diagram illustrating a functional block configuration of the client device 902 according to the embodiment.
  • the client device 902 includes, for example, a control unit 1100 and a storage unit 1110.
  • the control unit 1100 of the client apparatus 902 includes functional units 1101 such as a connection establishment unit 1111, a user operation acquisition unit 1112, a user operation transmission unit 1113, a setting unit 1114, and a screen information reception unit 1115.
  • the control unit 1100 of the client device 902 includes functional units 1101 such as an acknowledgment transmission unit 1116 and a screen update unit 1117.
  • the storage unit 1110 of the client device 902 stores a program 1120, for example.
  • the control unit 1100 of the client device 902 reads and executes the program 1120 to execute functional units 1101 such as a connection establishment unit 1111, a user operation acquisition unit 1112, a user operation transmission unit 1113, a setting unit 1114, and a screen information reception unit 1115. Function as. Further, the control unit 1100 of the client device 902 functions as a functional unit 1101 such as an acknowledgment transmission unit 1116 and a screen update unit 1117 by reading and executing the program 1120.
  • the connection establishment unit 1111 establishes a communication connection with the server device 901.
  • the user operation acquisition unit 1112 acquires a user operation input from the client device 902 with respect to the virtual desktop provided from the server device 901.
  • the user operation transmission unit 1113 transmits a signal notifying the user operation acquired by the user operation acquisition unit 1112 to the server device 901. Details of other functional units 1101 will be described later.
  • FIG. 12 is a diagram illustrating setting information 1200 according to the embodiment.
  • the setting information 1200 is information for notifying information on a network environment used for communication between the server device 901 and the client device 902, for example.
  • the setting information 1200 includes, for example, header information, identification information, usable bandwidth, and round trip delay time.
  • the header information stores information used for establishing communication between the server device 901 and the client device 902, for example.
  • the header information may include information such as an IP header and a TCP header (UDP header), for example.
  • the identification information stores, for example, information for identifying the setting information 1200 from screen information 1300 and an acknowledgment 1400 described later.
  • the value “0” is stored in the identification information of the setting information 1200
  • the value “1” is stored in the identification information of the screen information 1300 and the acknowledgment 1400 so that the information can be identified.
  • the usable bandwidth is, for example, a bandwidth that can be used by an application that constructs a remote desktop environment in communication between the server device and the client device, and stores information on the bandwidth.
  • the usable bandwidth is measured by the client device 902 or the server device 901, for example.
  • the round trip delay time is, for example, the time taken for a packet to go back and forth between the server device and the client device, and stores information on the round trip delay time.
  • the round trip delay time is measured by the server device 901 or the client device 902, for example.
  • FIG. 13 is a diagram illustrating screen information 1300 according to the embodiment.
  • the screen information 1300 is information for notifying the client device 902 of the image data of the virtual desktop screen captured by the server device 901, for example.
  • the screen information 1300 includes, for example, header information, identification information, a screen number, a division number, and screen data.
  • the header information stores information used for establishing communication between the server device 901 and the client device 902, for example.
  • the header information may include information such as an IP header and a TCP header (UDP header), for example.
  • the identification information stores, for example, information for identifying the setting information 1200 described above, the screen information 1300, and an acknowledgment 1400 described later.
  • the value “0” is stored in the identification information of the setting information 1200
  • the value “1” is stored in the identification information of the screen information 1300 and the acknowledgment 1400 so that the information can be identified.
  • the screen number for example, a serial number assigned in order to the screen information 1300 transmitted from the server apparatus 901 to the client apparatus 902 is stored.
  • the screen number may be, for example, a number sequentially assigned to the screen information 1300 transmitted after the server device 901 starts providing the remote desktop to the client device 902.
  • the division number stores a number assigned to the divided screen data obtained by the division. ing.
  • the screen data is, for example, image data of a virtual desktop screen captured by the server device 901.
  • the divided screen data corresponding to the division number is stored in the screen data.
  • FIG. 14 is a diagram illustrating an acknowledgment 1400 according to the embodiment.
  • the acknowledgment 1400 is information for notifying the server device 901 that the client device 902 has received the screen data when the client device 902 has received the screen data from the server device 901, for example.
  • the acknowledgment 1400 includes, for example, header information, identification information, and a screen number.
  • the header information stores information used for establishing communication between the server device 901 and the client device 902, for example.
  • the header information may include information such as an IP header and a TCP header (UDP header), for example.
  • the identification information stores, for example, information for identifying the setting information 1200 described above, the screen information 1300, and the acknowledgment 1400.
  • the value “0” is stored in the identification information of the setting information 1200
  • the value “1” is stored in the identification information of the screen information 1300 and the acknowledgment 1400 so that the information can be identified.
  • the client apparatus 902 has successfully received the screen information 1300 including the screen data from the server apparatus 901
  • the number stored in the screen number of the screen information 1300 is stored in the screen number.
  • FIG. 15 is a diagram illustrating screen data transmission / reception processing executed by the control unit 1000 of the server apparatus 901 and the control unit 1100 of the client apparatus 902 in the system 900 that provides a remote desktop according to the first embodiment.
  • the operation flow on the left side of FIG. 15 is a process executed by the server device 901, and the operation flow on the right side is a process executed by the client device 902.
  • FIG. 15 and its description in the case of the process executed by the server apparatus 901 in each step of the process, it is easy to distinguish the process executed by the server apparatus 901 and the process executed by the client apparatus 902. “S” is attached. In the case of processing executed by the client device 902, “C” is added.
  • processing executed by the control unit 1000 of the server apparatus 901 will be described with reference to the operation flow on the left side of FIG.
  • the operation flow of the processing executed by the server device 901 in FIG. 15 is implemented, for example, when the control unit 1000 of the server device 901 reads and executes the program 1020 stored in the storage unit 1010.
  • an application for creating a remote desktop environment with the server device 901 is executed in the client device 902 and communication between the server device 901 and the client device 902 is established, an operation flow on the left side of FIG. Starts.
  • step S1501 the control unit 1000 of the server apparatus 901 receives the setting information 1200 from the client apparatus 902. Subsequently, in step S1502, the control unit 1000 of the server apparatus 901 calculates the buffer size value according to Equation 1 using the available bandwidth and the round-trip delay time included in the setting information 1200.
  • the buffer size calculated by Expression 1 is a buffer size of a buffer provided in the client device 902 for storing the screen information 1300 transmitted by the server device 901. Note that a buffer having the same size as the buffer size of the buffer provided in the calculated client device 902 may be provided in the server device 901. In other words, the buffer of the server device 901 may also be provided with the buffer size calculated by the above equation 1.
  • the buffer provided in the server device 901 is used for transmitting the screen information 1300 to the client device 902, for example.
  • the control unit 1000 of the server device 901 calculates the window size value by the above equation 2 using, for example, the transmission data size stored in advance in the storage unit 1010 and the calculated buffer size. Further, the control unit 1000 of the server device 901 uses the obtained window size and the round trip delay time, or the transmission data size and the usable bandwidth, to set the value of the transmission interval according to Equation 3 above. calculate. Then, the control unit 1000 of the server apparatus 901 sets the buffer size value, the window size value, and the transmission interval value calculated above as the buffer size, the window size, and the transmission interval, respectively.
  • step S1503 the control unit 1000 of the server apparatus 901 sets the set window size value to N, which is a variable for storing the window empty size value.
  • step S1504 the control unit 1000 of the server device 901 captures a virtual desktop screen provided to the connected client device 902, performs processing such as compression, and transmits the screen data to the client device 902. Is generated.
  • step S1505 the control unit 1000 of the server apparatus 901 determines whether N is greater than 0. In other words, the control unit 1000 of the server device 901 determines whether there is an empty window size. If N is greater than 0 and there is an empty size (Yes in step S1505), the flow proceeds to step S1506.
  • step S1506 the control unit 1000 of the server device 901 generates screen information 1300 including the screen data generated in step S1504, and transmits the screen information 1300 to the client device 902.
  • the screen number of the screen information 1300 stores a serial number assigned to the screen information 1300 transmitted from the server apparatus 901 to the client apparatus 902 in order.
  • the screen number may be, for example, a number sequentially assigned to the screen information 1300 transmitted after the server device 901 starts providing the remote desktop to the client device 902.
  • screen information 1300 including a division number indicating which part of the screen data the divided divided screen data corresponds to is generated and transmitted.
  • the flow proceeds to step S1509.
  • step S1505 determines whether N is not larger than 0 and there is no empty space in step S1505 (step S1505 is No).
  • step S1508 the control unit 1000 of the server apparatus 901 discards the screen data generated in step S1504 without transmitting it to the client apparatus 902, for example, and drops the screen data generated in step S1504 as a result.
  • step S1509 the control unit 1000 of the server apparatus 901 adjusts the transmission interval by waiting until the transmission interval time set in step S1502 elapses after the screen data is generated in step S1504.
  • step S1509 it is assumed that an acknowledgment 1400 is received from the client device 902 during the period from when the screen data is generated in step S1504 until the time of the transmission interval elapses.
  • the empty size of the window increases by that amount, so by adding 1 to N, the value of empty size: N is updated.
  • step S1509 after the screen data is generated in step S1504 and the transmission interval time set in step S1502 has elapsed, the flow returns to step S1504.
  • processing executed by the control unit 1100 of the client device 902 will be described with reference to the operation flow on the right side of FIG.
  • the operation flow of processing executed by the client device 902 in FIG. 15 is implemented, for example, when the control unit 1100 of the client device 902 reads and executes the program 1120 stored in the storage unit 1110.
  • an application for creating a remote desktop environment with the server apparatus 901 is executed in the client apparatus 902 and communication between the server apparatus 901 and the client apparatus 902 is established, an operation flow on the right side of FIG. Starts.
  • step C1501 the control unit 1100 of the client device 902 measures the network environment. For example, the control unit 1100 of the client device 902 measures the time from when a packet is transmitted to the server device 901 to when the response is returned, thereby determining the round-trip delay time of communication with the server device 901. measure. Further, the client device 902 measures, for example, a bandwidth that can be used by an application that creates a remote desktop environment with the server device 901 as an available bandwidth. In step C1502, the control unit 1100 of the client device 902 stores a buffer for accumulating information included in the screen information 1300 transmitted from the server device 901 from the obtained round-trip delay time and usable bandwidth according to the above equation 1. Calculate and set the buffer size.
  • step C1503 the control unit 1100 of the client device 902 generates setting information 1200 from the round-trip delay time measured in step C1501 and the usable bandwidth, and transmits the setting information 1200 to the server device 901.
  • step C1504 the control unit 1100 of the client device 902 receives the screen information 1300 transmitted from the server device 901, and stores the screen information 1300 in a buffer.
  • the information stored in the buffer may be a part of information such as a screen number and screen data included in the screen information 1300.
  • step C1505 the control unit 1100 of the client device 902 generates an acknowledgment 1400 including the screen number included in the received screen information 1300, and transmits it to the server device 901.
  • step C1506 the control unit 1100 of the client device 902 rearranges the screen information 1300 stored in the buffer in the order of the screen numbers. Thereby, the screen information 1300 stored in the buffer is rearranged in the order transmitted from the server apparatus 901.
  • the control unit 1100 of the client device 902 determines whether there is screen information 1300 to be displayed in the buffer.
  • the screen information 1300 to be displayed is, for example, screen information 1300 including the next screen number of the screen data being displayed when screen data is already displayed on the display screen.
  • the screen data has already been displayed on the display screen of the display device 905 after the remote desktop environment is constructed, and the screen number of the screen data being displayed is “20”.
  • the screen information 1300 having the next screen number “21” may be the screen information 1300 to be displayed.
  • the screen information 1300 to be displayed is the first screen information 1300.
  • Reference numeral 1300 denotes screen information 1300 to be displayed. If there is no screen information 1300 to be displayed in the buffer in Step C1507 (No in Step C1507), the flow returns to Step C1504 and waits for new screen information 1300 to be received. If there is screen information 1300 to be displayed in the buffer (Yes in step C1507), the flow proceeds to step C1508.
  • step C1508 the control unit 1100 of the client device 902 updates the display screen by displaying the screen data included in the screen information 1300 determined to be displayed in step C1507 on the display screen. Then, the control unit 1100 of the client device 902 deletes the screen information 1300 including the screen data displayed from the buffer, and the flow returns to Step C1507.
  • the server apparatus 901 generates screen information 1300 at the transmission interval calculated by the above-described equation 3 and transmits it to the client apparatus 902. Since this transmission interval is set to a length that suppresses frame dropping and makes the transmission interval substantially constant, for example, the server device 901 stores the screen information 1300 in the client device every time the set transmission interval elapses. 902 can be transmitted. Therefore, the client device 902 can receive the screen information 1300 at a substantially constant interval. As a result, the display screen of the client device 902 can be updated at a substantially constant update interval, and usability is improved.
  • the control unit 1000 of the server device 901 functions as the setting unit 1014, for example.
  • the control unit 1000 of the server device 901 functions as, for example, the screen data acquisition unit 1015.
  • the control unit 1000 of the server apparatus 901 functions as, for example, the transmission permission / inhibition determination unit 1016.
  • the control unit 1000 of the server device 901 functions as, for example, the screen information transmission unit 1017.
  • the control unit 1000 of the server device 901 functions as the adjustment unit 1018, for example.
  • the transmission permission / inhibition determination unit 1016 and the screen information transmission unit 1017 function as the transmission unit 1019 in steps S1505 to S1507.
  • control unit 1100 of the client device 902 functions as the setting unit 1114, for example. Also, in the process of step C1504, the control unit 1100 of the client device 902 functions as the screen information receiving unit 1115, for example. In the process of step C1505, the control unit 1100 of the client device 902 functions as, for example, an acknowledgment transmission unit 1116. In the processing from step C1506 to step C1508, the control unit 1100 of the client device 902 functions as the screen update unit 1117, for example.
  • the case where the network environment is measured by the client device 902 is exemplified.
  • the second embodiment a case where the network environment is measured by the server device 901 is illustrated.
  • FIG. 16 is a diagram illustrating screen data transmission / reception processing executed by the control unit 1000 of the server apparatus 901 and the control unit 1100 of the client apparatus 902 in the system 900 that provides the remote desktop environment according to the second embodiment.
  • the operation flow on the left side of FIG. 16 is a process executed by the server device 901, and the operation flow on the right side is a process executed by the client device 902.
  • FIG. 16 and its description in order to easily identify the process executed by the server apparatus 901 and the process executed by the client apparatus 902, in each process step, in the case of the process executed by the server apparatus 901, “S” is attached. In the case of processing executed by the client device 902, “C” is added.
  • processing executed by the control unit 1000 of the server apparatus 901 will be described with reference to the operation flow on the left side of FIG.
  • the operation flow of processing executed by the server device 901 in FIG. 16 is implemented, for example, by the control unit 1000 of the server device 901 reading and executing the program 1020 stored in the storage unit 1010.
  • an operation flow on the left side of FIG. Starts.
  • step S1601 the control unit 1000 of the server apparatus 901 measures the network environment. For example, the control unit 1000 of the server apparatus 901 measures the time from when a packet is transmitted to the client apparatus 902 to when the response is returned, thereby determining the round-trip delay time of communication with the client apparatus 902. measure. Further, the server device 901 measures, for example, a bandwidth that can be used by an application that establishes a remote desktop environment with the client device 902 as an available bandwidth. In step S1602, the control unit 1000 of the server apparatus 901 generates setting information 1200 including the measured round-trip delay time and the usable bandwidth, and transmits the setting information 1200 to the client apparatus 902.
  • step S1603 the control unit 1000 of the server apparatus 901 calculates the buffer size value by the above equation 1 using the usable bandwidth and the round trip delay time measured in step S1601.
  • the buffer size calculated by Expression 1 is the buffer size of the buffer provided in the client device 902 for storing the screen information 1300 transmitted from the server device 901.
  • a buffer having the same size as the buffer size of the buffer provided in the calculated client device 902 may be provided in the server device 901.
  • the buffer provided in the server apparatus 901 is used for transmitting the screen information 1300 to the client apparatus 902.
  • the buffer of the server device 901 may also be provided with the buffer size calculated by the above equation 1.
  • the control unit 1000 of the server device 901 calculates the window size value by the above equation 2 using, for example, the transmission data size stored in advance in the storage unit 1010 and the calculated buffer size. Further, the control unit 1000 of the server device 901 calculates the value of the transmission interval by the above equation 3 using the obtained window size and the round trip delay time, or using the transmission data size and the usable bandwidth. . Then, the control unit 1000 of the server apparatus 901 sets the buffer size value, the window size value, and the transmission interval value calculated above as the buffer size, the window size, and the transmission interval, respectively.
  • step S1604 the control unit 1000 of the server apparatus 901 waits to receive a synchronization signal from the client apparatus 902.
  • the server apparatus 901 receives the setting information 1200 in step S1501
  • the client apparatus 902 has already completed the processing from step C1501 to step C1503. Therefore, when the server apparatus 901 receives the setting information 1200 in step S1501, the client apparatus 902 is ready to receive the screen information 1300 transmitted from the server apparatus 901 in step C1504.
  • the processing of the client device 902 proceeds.
  • the server apparatus 901 receives from the client apparatus 902 a synchronization signal indicating that it is ready to receive the screen information 1300 in step S1604, and the process advances to step S1605.
  • step S1605 to step S1611 correspond to, for example, the processes from step S1503 to step S1509 executed by the server apparatus 901 in FIG.
  • the control unit 1000 of the server device 901 may execute processing similar to the processing from corresponding steps S1503 to S1509 in steps S1605 to S1611.
  • the server apparatus 901 transmits the screen information 1300 to the client apparatus 902.
  • the server apparatus 901 controls the transmission interval of the screen information 1300 based on the window size and transmission interval set in step S1603 and the acknowledgment 1400 received from the client apparatus 902.
  • processing executed by the control unit 1100 of the client device 902 will be described with reference to the operation flow on the right side of FIG.
  • the operation flow of processing executed by the client device 902 in FIG. 16 is implemented, for example, when the control unit 1100 of the client device 902 reads and executes the program 1120 stored in the storage unit 1110.
  • an application for creating a remote desktop environment with the server apparatus 901 is executed in the client apparatus 902 and communication between the server apparatus 901 and the client apparatus 902 is established, an operation flow on the right side of FIG. Starts.
  • step C1601 the control unit 1100 of the client device 902 receives the setting information 1200 from the server device 901.
  • step C1602 the control unit 1100 of the client device 902 calculates and sets the buffer size of the buffer by the above equation 1 from the round-trip delay time included in the received setting information 1200 and the usable bandwidth. For example, this buffer is used in the client device 902 to store information included in the screen information 1300 transmitted from the server device 901.
  • the control unit 1100 of the client apparatus 902 generates a synchronization signal indicating that it is ready to receive the screen information 1300 from the server apparatus 901, and transmits the synchronization signal to the server apparatus 901.
  • step C1604 to step C1608 corresponds to, for example, the processing from step C1504 to step S1508 executed by the client device 902 in FIG.
  • the control unit 1100 of the client device 902 may execute processing similar to the processing of corresponding steps C1504 to S1508 in steps C1604 to C1608.
  • step C1604 to step C1608 when the server apparatus 901 receives the screen information 1300, the server apparatus 901 stores the screen information 1300 in a buffer and returns an acknowledgment 1400 to the server apparatus 901. Then, the screen data of the screen information 1300 stored in the buffer is displayed on the display screen of the display device 905 in the order of screen numbers. Further, the screen information 1300 including the displayed screen data is erased from the buffer.
  • the server apparatus 901 generates the screen information 1300 at the transmission interval calculated by the above-described expression 3 and transmits it to the client apparatus 902 by the operation flow described in FIG. Since this transmission interval is set to a length that suppresses frame dropping and makes the transmission interval substantially constant, for example, the server device 901 stores the screen information 1300 in the client device every time the set transmission interval elapses. 902 can be transmitted. Therefore, the client device 902 can receive the screen information 1300 at a substantially constant interval. As a result, the display screen of the client device 902 can be updated at a substantially constant update interval, and usability is improved.
  • the control unit 1000 of the server device 901 functions as the setting unit 1014, for example.
  • the control unit 1000 of the server device 901 functions as, for example, the screen data acquisition unit 1015.
  • the control unit 1000 of the server apparatus 901 functions as, for example, the transmission permission / inhibition determination unit 1016.
  • the control unit 1000 of the server device 901 functions as, for example, the screen information transmission unit 1017.
  • the control unit 1000 of the server device 901 functions as the adjustment unit 1018, for example.
  • the transmission permission / inhibition determination unit 1016 and the screen information transmission unit 1017 function as the transmission unit 1019 from step S1607 to step S1609.
  • control unit 1100 of the client device 902 functions as the setting unit 1114, for example. Also, in the process of step C1604, the control unit 1100 of the client device 902 functions as the screen information receiving unit 1115, for example. In the process of step C1605, the control unit 1100 of the client device 902 functions as, for example, an acknowledgment transmission unit 1116. In the processing from step C1606 to step C1608, the control unit 1100 of the client device 902 functions as the screen update unit 1117, for example.
  • FIG. 17 is a diagram illustrating screen data transmission / reception processing executed by the control unit 1000 of the server apparatus 901 and the control unit 1100 of the client apparatus 902 in the system 900 that provides a remote desktop according to the third embodiment.
  • the operation flow on the left side of FIG. 17 is a process executed by the server device 901
  • the operation flow on the right side is a process executed by the client device 902.
  • the process executed by the server apparatus 901 is included in each step of the process. In this case, “S” is added. In the case of processing executed by the client device 902, “C” is added.
  • processing executed by the control unit 1000 of the server apparatus 901 will be described with reference to the operation flow on the left side of FIG.
  • the operation flow of the processing executed by the server device 901 in FIG. 17 is implemented, for example, by the control unit 1000 of the server device 901 reading and executing the program 1020 stored in the storage unit 1010.
  • the operation flow on the left side of FIG. Starts.
  • step S1701 the control unit 1000 of the server apparatus 901 executes setting processing. For example, when the network environment is measured by the client device 902, the control unit 1000 of the server device 901 may execute the processing from step S1501 to step S1502 in FIG. For example, when the server device 901 performs measurement of the network environment, the control unit 1000 of the server device 901 may execute the processing from step S1601 to step S1604 in FIG. 16 in the setting processing. Subsequently, in step S1702, the control unit 1000 of the server apparatus 901 sets the window size value set in the setting process to N, which is a variable for storing the empty window size.
  • N is a variable for storing the empty window size.
  • step S1703 the control unit 1000 of the server apparatus 901 sets 0 to nCount and nSize [] and 1 to nAckPlus (also referred to as a correction addition value).
  • nCount, nSize [], and nAckPlus are variables used in the subsequent processing, and details thereof will be described later.
  • step S1704 the control unit 1000 of the server apparatus 901 captures a virtual desktop screen that provides a remote desktop to the connected client apparatus 902. Then, processing such as compression is performed on the obtained image data, and screen data to be transmitted to the client device 902 is generated.
  • step S1705 the control unit 1000 of the server apparatus 901 determines whether N is 1 or more. In other words, the control unit 1000 of the server device 901 determines whether or not there is an empty window size.
  • step S1711 the control unit 1000 of the server apparatus 901 discards the screen information 1300 generated in step S1704 without transmitting it to the client apparatus 902, for example, and drops the screen data generated in step S1704 as a result.
  • step S1705 the control unit 1000 of the server apparatus 901 generates screen information 1300 including the screen data generated in step S1704 and a serial number assigned to the screen data, and transmits the screen information 1300 to the client apparatus 902.
  • the screen information 1300 including the divided divided screen data and a division number indicating which portion of the divided screen data corresponds to the screen data is generated. And send.
  • step S1708 the control unit 1000 of the server apparatus 901 stores the data size of the transmitted screen information 1300 in nSize [nCount], and records the data size of the screen information 1300 corresponding to the current value of nCount. Thereafter, 1 is added to the value of nCount to update the value of nCount.
  • step S1709 the control unit 1000 of the server apparatus 901 determines whether the value of nCount is greater than a predetermined number of times. If the number is less than or equal to the predetermined number (step S1709 is No), the flow proceeds to step S1712. On the other hand, if it is greater than the predetermined number of times (Yes in step S1709), the flow proceeds to step S1710.
  • step S1710 the control unit 1000 of the server device 901 executes resetting processing. Details of the resetting process will be described later with reference to FIG. 18, but values such as a window size and a transmission interval are reset by the resetting process. Also, the value of N indicating the current empty size is reset according to the reset window size.
  • step S1712 the control unit 1000 of the server apparatus 901 adjusts the transmission interval by waiting until the transmission interval time set in step S1701 elapses after the screen data is generated in step S1704.
  • step S1712 it is assumed that an acknowledgment 1400 is received from the client device 902 during the period from when the screen data is generated in step S1704 until the time of the transmission interval elapses.
  • the value to be added to N is transmitted when the received acknowledgment 1400 is the acknowledgment 1400 for the screen information 1300 transmitted before the resetting process or when the window size after the resetting process is the current value.
  • the screen information 1300 is different depending on the affirmative response 1400.
  • the window size is obtained by dividing the buffer size by the transmission data size (Equation 2).
  • the transmission data size is a value obtained by estimating the maximum data size among the transmission data such as the screen information 1300 transmitted by the server apparatus 901.
  • the window size can be used as a value representing at least how many pieces of transmission data can be held in the buffer.
  • the window size and the buffer size are associated with each other in this way, for example, it is assumed that the window size is 3 before resetting and doubles after resetting.
  • the buffer size assigned to N value 1 before resetting corresponds to two N values in the window size after resetting. Therefore, when the acknowledgment 1400 for the screen information 1300 transmitted before resetting is received after resetting, the actual window empty for the window size after resetting must be added to N instead of 2 instead of 1. The size is not reflected in the value of N. Therefore, in step S1712, when an acknowledgment 1400 for the screen information 1300 transmitted when the window size value is the value before resetting is received, nAckPlus reflecting the window size variation due to resetting is added to N and empty. Size: Update the value of N. The calculation of nAckPlus will be described later with reference to FIG.
  • control unit 1000 of the server apparatus 901 receives the acknowledgment 1400 for the screen information 1300 transmitted when the window size value is the currently set value in step S1712, the control unit 1000 adds 1 to N.
  • Empty size Update the value of N.
  • the received acknowledgment 1400 is the acknowledgment 1400 for the screen information 1300 transmitted before the resetting or the acknowledgment 1400 for the screen information 1300 transmitted when the window size value is the currently set value is as follows: It may be determined as follows. For example, the screen number included in the received acknowledgment 1400 is divided by the predetermined number used in step S1709, and the decimal part of the obtained value is rounded down to an integer to obtain the value A. Further, the screen number added to the screen information 1300 when the process of step S1706 was executed last time is divided by the predetermined number used in step S1709, and the decimal part of the obtained value is rounded down to an integer to obtain the value B.
  • the received acknowledgment 1400 may be determined as the screen information 1300 transmitted when the window size value is the currently set value. Further, if the obtained value A is smaller than the value B, it may be determined that the received acknowledgment 1400 is an acknowledgment 1400 for the screen information 1300 transmitted before resetting. The received acknowledgment is an acknowledgment 1400 for the screen information 1300 transmitted before resetting, or an acknowledgment 1400 for the screen information 1300 transmitted when the window size value is the currently set value. Such determination is not limited to this. In other embodiments, it may be determined by other techniques. In step S1712, after the screen data is generated in step S1704, when the set transmission interval has elapsed, the flow returns to step S1704.
  • processing executed by the control unit 1100 of the client device 902 will be described with reference to the operation flow on the right side of FIG.
  • the operation flow of the processing executed by the client device 902 in FIG. 17 is implemented, for example, when the control unit 1100 of the client device 902 reads and executes the program 1120 stored in the storage unit 1110.
  • an application for creating a remote desktop environment with the server device 901 is executed in the client device 902 and communication between the server device 901 and the client device 902 is established, an operation flow on the right side of FIG. Starts.
  • step C1701 the control unit 1100 of the client device 902 executes setting processing.
  • the control unit 1100 of the client device 902 may execute the processing from step C1501 to step C1503 in FIG.
  • the control unit 1100 of the client device 902 may execute the processing from step C1601 to step C1603 in FIG. 16 in the setting processing.
  • the subsequent processes from step C1702 to step C1706 correspond to, for example, the processes from step C1504 to step S1508 executed by the client apparatus 902 in FIG.
  • control unit 1100 of the client device 902 may execute processing similar to the processing from corresponding step C1504 to step S1508 in steps C1702 to C1706.
  • the client apparatus 902 stores the screen information 1300 in a buffer and returns an acknowledgment 1400 to the server apparatus 901. Then, the screen data of the screen information 1300 stored in the buffer is displayed on the display screen of the display device 905 in the order of screen numbers. Further, the screen information 1300 including the displayed screen data is erased from the buffer.
  • FIG. 18 is a diagram illustrating the resetting process executed by the control unit 1000 of the server apparatus 901 in step S1710 of FIG.
  • the operation flow of the resetting process in FIG. 18 is implemented, for example, when the control unit 1000 of the server device 901 reads and executes the program 1020 stored in the storage unit 1010. In one embodiment, proceeding to step S1710 of FIG. 17, the resetting process starts.
  • step S1801 the control unit 1000 of the server apparatus 901 stores the value of the current empty size: N in the variable N old . Further, the control unit 1000 of the server device 901 stores the transmission data size used for calculating the window size value that has been set until the resetting process is started, in nSendSize old . Further, as described above, the processing from the determination of Yes in step S1705 to step S1709 is repeated until nCount reaches a value exceeding a predetermined number of times. In each repetition, in step S1708, the data size of the transmitted screen information 1300 is stored in the corresponding nSize [nCount].
  • step S1801 the control unit 1000 of the server apparatus 901 determines the value of nSize [nCount] having the maximum data size among the stored nSize [nCount] (where nCount is a predetermined number from 0). To get. Then, the control unit 1000 of the server device 901 stores the value of nSize [nCount] having the acquired maximum data size in nSendSize new as a new transmission data size.
  • the average data size of nSize [nCount] (where nCount is a predetermined number of times from 0) is added to the value stored as the new transmission data size in nSendSize new in step S1801. May be used.
  • the average data size of nSize [nCount] (where nCount is a predetermined number from 0) may be calculated, for example, by the following equation.
  • step S1802 the control unit 1000 of the server apparatus 901 uses the obtained new transmission data size nSendSize new to calculate a new window size according to Equation 2, and resets the window size value.
  • the value set in step S1701 is used as the value of the buffer size.
  • step S1803 the control unit 1000 of the server apparatus 901 calculates how many N old , which is the empty size of the window before the start of the resetting process, corresponds to the window size newly set in step S1802. This calculation is performed by, for example, the formula shown in step S1803. Note that the decimal part is rounded up according to the formula shown in step S1803.
  • the control unit 1000 of the server apparatus 901 resets the value obtained by the expression shown in step S1803 to N, which is a variable for storing the value of the window empty size. Note that the value of N reset here is used thereafter in, for example, step S1705, step S1707, and step S1712.
  • step S1804 the control unit 1000 of the server apparatus 901 calculates nAckPlus.
  • nAckPlus represents the ratio of N was reset in N old and step S1803 is empty size before the start of the window re-setting process.
  • nAckPlus is a value added to N when an acknowledgment 1400 for the screen information 1300 transmitted before resetting is received in step S1712.
  • step S1805 the control unit 1000 of the server apparatus 901 retransmits the transmission interval by dividing the round trip delay time acquired in, for example, step S1701 by the window size newly calculated in step S1802 using Equation 3 above. Set.
  • step S1805 the transmission interval may be calculated by dividing the nSendSize new acquired in step S1801 by the usable bandwidth acquired in step S1701, for example, using Equation 3 above. Subsequently, in step S1806, the control unit 1000 of the server apparatus 901 resets the value of nCount and the value of nSize [] to 0, and the operation flow ends, and the flow proceeds to step S1712 in FIG.
  • the server apparatus 901 executes the resetting process every time nCount reaches a value exceeding a predetermined number.
  • the window size and the transmission interval are reset based on the data size of the screen information 1300 transmitted during the repetition of the value of nCount from 0 to a predetermined number of times.
  • the value of N indicating the current empty size is reset according to the reset window size value.
  • nAckPlus for updating the reset value of N is also calculated.
  • the window size is dynamically reset according to the data size of the screen information 1300 that is actually transmitted. Therefore, appropriate transmission is performed according to the change in the data size of the screen information 1300.
  • the interval can be reset dynamically.
  • the obtained transmission interval is set to a length that suppresses frame dropping and makes the transmission interval substantially constant, for example. Therefore, the server apparatus 901 can transmit the screen information 1300 to the client apparatus 902 every time the set transmission interval elapses. As a result, the display screen of the client device 902 can be updated at a substantially constant update interval, and usability is improved.
  • the control unit 1000 of the server device 901 functions as the setting unit 1014, for example.
  • the control unit 1000 of the server device 901 functions as, for example, the screen data acquisition unit 1015.
  • the control unit 1000 of the server device 901 functions as, for example, the transmission permission / inhibition determination unit 1016.
  • the control unit 1000 of the server device 901 functions as, for example, the screen information transmission unit 1017.
  • the control unit 1000 of the server device 901 functions as the adjustment unit 1018, for example.
  • the transmission permission / inhibition determination unit 1016 and the screen information transmission unit 1017 function as the transmission unit 1019 from step S1705 to step S1707.
  • the control unit 1000 of the server device 901 functions as, for example, the setting unit 1014.
  • control unit 1100 of the client device 902 functions as the setting unit 1114, for example. Further, in the process of step C1702, the control unit 1100 of the client device 902 functions as the screen information reception unit 1115, for example. In the process of step C1703, the control unit 1100 of the client device 902 functions as, for example, an acknowledgment transmission unit 1116. In the processing from step C1704 to step C1706, the control unit 1100 of the client device 902 functions as the screen update unit 1117, for example.
  • FIG. 19 is a diagram illustrating a hardware configuration of an information processing apparatus 1900 such as a computer for realizing the server apparatus 901 according to the embodiment.
  • the hardware configuration for realizing the server device 901 in FIG. 19 includes, for example, a processor 1901, a memory 1902, a storage device 1903, a reading device 1904, a communication interface 1906, and an input / output interface 1907.
  • the processor 1901, the memory 1902, the storage device 1903, the reading device 1904, the communication interface 1906, and the input / output interface 1907 are connected to each other via a bus 1908, for example.
  • the processor 1901 provides a part or all of the functions of each functional unit described above by executing a program 1020 including a program describing the procedure of the above-described operation flow using the memory 1902.
  • the control unit 1000 of the server device 901 is, for example, a processor 1901
  • the storage unit 1010 includes, for example, a memory 1902, a storage device 1903, and a removable storage medium 1905.
  • a program 1020 is stored in the storage device 1903 of the server device 901.
  • the processor 1901 of the server device 901 functions as, for example, the connection establishment unit 1011, the user operation reception unit 1012, the screen update unit 1013, and the setting unit 1014 by reading and executing the program 1020 stored in the storage device 1903. To do.
  • the processor 1901 of the server device 901 functions as a screen data acquisition unit 1015, a transmission permission / inhibition determination unit 1016, and a screen information transmission unit 1017 by reading and executing a program 1020 stored in the storage device 1903, for example.
  • the processor 1901 of the server device 901 functions as the adjustment unit 1018 and the transmission unit 1019 by reading and executing the program 1020 stored in the storage device 1903, for example.
  • the memory 1902 is, for example, a semiconductor memory, and includes a RAM area and a ROM area.
  • the storage device 1903 is, for example, a hard disk, a semiconductor memory such as a flash memory, or an external storage device.
  • the reading device 1904 accesses the removable storage medium 1905 in accordance with instructions from the processor 1901.
  • the detachable storage medium 1905 includes, for example, a semiconductor device (USB memory or the like), a medium to / from which information is input / output by a magnetic action (such as a magnetic disk), a medium to / from which information is input / output by an optical action (CD-ROM, For example, a DVD).
  • the communication interface 1906 transmits and receives data via the network 1920 in accordance with instructions from the processor 1901.
  • the network 1920 may be the network 903 described above, for example.
  • the input / output interface 1907 corresponds to, for example, an interface between the input device and the output device.
  • the input device is, for example, a device such as a keyboard or a mouse that receives an instruction from the user.
  • the output device is a display device such as a display and an audio device such as a speaker.
  • Each program according to the embodiment is provided to the server device 901 in the following form, for example. (1) Installed in advance in the storage device 1903. (2) Provided by the removable storage medium 1905. (3) Provided from the program server 1930.
  • FIG. 20 is a diagram illustrating a hardware configuration of the information processing apparatus 2000 such as a computer for realizing the client apparatus 902 according to the embodiment.
  • the hardware configuration for realizing the client device 902 in FIG. 20 includes, for example, a processor 2001, a memory 2002, a storage device 2003, a reading device 2004, a communication interface 2006, an input / output interface 2007, and a display device 2010.
  • the processor 2001, the memory 2002, the storage device 2003, the reading device 2004, the communication interface 2006, and the input / output interface 2007 are connected to each other via a bus 2008, for example.
  • the processor 2001 provides a part or all of the functions of each functional unit described above by executing a program 1120 including a program describing the procedure of the above-described operation flow using the memory 2002, for example.
  • the control unit 1100 of the client device 902 is a processor 2001, for example, and the storage unit 1110 includes, for example, a memory 2002, a storage device 2003, and a removable storage medium 2005.
  • a program 1120 is stored in the storage device 2003 of the client device 902.
  • the processor 2001 of the client device 902 functions as a connection establishment unit 1111, a user operation acquisition unit 1112, a user operation transmission unit 1113, and a setting unit 1114 by reading and executing a program 1120 stored in the storage device 2003.
  • the processor 2001 of the client device 902 functions as a screen information reception unit 1115, an acknowledgment transmission unit 1116, and a screen update unit 1117 by reading and executing the program 1120 stored in the storage device 2003, for example.
  • the memory 2002 is a semiconductor memory, for example, and includes a RAM area and a ROM area.
  • the storage device 2003 is, for example, a semiconductor memory such as a hard disk or a flash memory, or an external storage device.
  • the reading device 2004 accesses the removable storage medium 2005 in accordance with an instruction from the processor 2001.
  • the detachable storage medium 2005 includes, for example, a semiconductor device (USB memory, etc.), a medium (information such as a magnetic disk) to which information is input / output by a magnetic action, For example, a DVD).
  • the communication interface 2006 transmits and receives data via the network 2020 in accordance with instructions from the processor 2001.
  • the network 2020 may be the above-described network 903, for example.
  • the input / output interface 2007 corresponds to, for example, an interface between the input device and the output device.
  • a display device 2010 such as a display is connected to the input / output interface 2007.
  • the input / output interface 2007 may be connected to another output device such as a speaker.
  • an input device such as a keyboard or a mouse may be connected to the input / output interface 2007.
  • Each program according to the embodiment is provided to the client device 902 in the following form, for example. (1) Installed in advance in the storage device 2003. (2) Provided by the removable storage medium 2005. (3) Provided from the program server 2030.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

情報処理装置は、クライアント装置との間の通信において利用可能な帯域に、通信の往復遅延時間を乗算して、クライアント装置が有するバッファのバッファサイズを算出する。また、バッファサイズをクライアント装置に対して設定されている送信データサイズで除算することで得られた実数を整数化して整数値を算出し、整数値を空サイズに設定する。往復遅延時間を整数値で除算して得られた値、又は、送信データサイズを帯域で除算して得られた値を、送信間隔として設定する。送信間隔が経過するたびに、空サイズが第1の値よりも大きいか否かを判定し、第1の値よりも大きい場合にリモートデスクトップの画面の画像データを生成してクライアント装置に送信し、空サイズから第2の値を減算する。送信した画像データに対する応答を、クライアント装置から受信するたびに、空サイズに第2の値を加算する。

Description

情報処理装置、方法、及びプログラム
 本発明は、情報処理装置、方法、及びプログラムに関する。
 リモートデスクトップでは、サーバ装置に仮想化されたデスクトップ環境が配置される(以下、仮想デスクトップと呼ぶ)。クライアント装置は遠隔でサーバにアクセスして、サーバ装置の計算資源を用いて提供される仮想デスクトップを利用することができる。近年、スマートフォンなどのモバイル機器の高機能化と普及に伴って、モバイル環境からリモートデスクトップを提供するサービスを利用することのニーズが増大している。また、データのセキュリティ対策やパソコンの運用管理のコストの観点からも、リモートデスクトップを提供するサービスが注目されている。
 一方で、データの送受信を行う通信装置同士の距離は、事業のグローバル化などによりますます長くなっている。通信相手に信号やデータを発信してから、応答が帰ってくるまでにかかる時間である往復遅延時間(Round Trip Time:RTT)は、相手との物理的な距離や、経路上で中継・転送する装置などの数によって左右される。例えば、送信側の通信装置と受信側の通信装置との間の経路の往復遅延時間は、送信側の通信装置と受信側の通信装置の間の距離が長いほど長くなる。そして、肯定応答(ACK:ACKnowledgement)によりデータの到着を保証する例えばTCPなどの方式では、往復遅延時間が長くなると肯定応答が戻ってくるまでの時間も遅くなる。結果として、待ち時間が大きくなり、通信のスループットが低下してしまう。
 更に、クライアント装置において動いている他のアプリケーションが通信帯域を占有し、リモートデスクトップ環境を構築するために利用可能な通信帯域が制限されてしまう状況が存在する。この様な状況下では、通信速度は更に遅くなってしまう。
 これに関し、サーバ装置からクライアント装置へ動画情報を伝送する伝送路の伝送量が不均一のために情報の欠落や伝送情報の遅延等を生じるのを軽減又は阻止する動画情報伝送方法および装置を提供する技術が知られている。また、動画像データの伝送エラーを低減する技術が知られている。(例えば、特許文献1及び特許文献2参照)
特開2005-260302号公報 特開2009-49529号公報
 リモートデスクトップの一例では、サーバ装置は、仮想デスクトップの画面をキャプチャして得られた画像データをクライアント装置に送信する。クライアント装置は、受信した画像データを表示画面に表示する。クライアント装置のユーザは表示画面に表示された画像データから仮想デスクトップの状態を把握することができる。また、クライアント装置は、ユーザが仮想デスクトップに対して入力した操作をサーバ装置に通知する。サーバ装置は、入力されたユーザの操作に従って仮想デスクトップの画面を更新する。そのため、デスクトップ環境が配置されていないクライアント装置であってもデスクトップ環境を利用することが可能である。例えば、この様な実装において、通信速度はクライアント装置におけるリモートデスクトップの画面の更新間隔に影響する。そして、画面の更新間隔が長くなると、リモートデスクトップのユーザビリティが低下することにつながる。このユーザビリティの低下は、例えば通信速度を速くすることで改善できるが、ネットワーク環境によっては通信速度を十分に速くすることが難しい状況が存在する。そのため、例えば所与の通信速度においても、リモートデスクトップのユーザビリティを向上させることのできる技術の提供が望まれている。
 本発明の一つの態様の情報処理装置が実行する方法は、算出する工程、空サイズに設定する工程、送信間隔として設定する工程、減算する工程、及び加算する工程を含む。算出する工程は、クライアント装置との間の通信において利用可能な帯域に、通信の往復遅延時間を乗算して、クライアント装置が有するバッファのバッファサイズを算出する。空サイズに設定する工程は、バッファサイズをクライアント装置に対して設定されている送信データサイズで除算することで得られた実数を整数化して整数値を算出し、整数値を空サイズに設定する。送信間隔として設定する工程は、往復遅延時間を整数値で除算して得られた値、又は、送信データサイズを帯域で除算して得られた値を、送信間隔として設定する。減算する工程は、送信間隔が経過するたびに、空サイズが第1の値よりも大きいか否かを判定し、第1の値よりも大きい場合にリモートデスクトップの画面の画像データを生成してクライアント装置に送信し、空サイズから第2の値を減算する。加算する工程は、減算する工程により送信した画像データに対する応答を、クライアント装置から受信するたびに、空サイズに第2の値を加算する。
 リモートデスクトップのユーザビリティを向上させる。
リモートデスクトップを提供するシステムにおけるサーバ装置と、クライアント装置との間のデータの送受信の流れを例示する図である。 クライアント装置からの肯定応答の到着を待たずに次の画面の画像データを送信する場合のデータの送受信の流れを例示する図である。 コマ落ちとスライディングウィンドウによる画面データの送信数の制御を例示する図である。 画面の更新間隔の片寄を例示する図である。 ユーザが入力した操作に対する表示画面の応答性を例示する図である。 実施形態に係る送信間隔を用いることによる画面の更新間隔の片寄の抑制を例示する図である。 実施形態に係る送信間隔を用いることによる画面のユーザ操作に対する応答性の改善を例示する図である。 サーバ装置の仮想デスクトップの画面と、クライアント装置の表示画面とを例示する図である。 実施形態に係るリモートデスクトップを提供するシステムを例示する図である。 実施形態に係るサーバ装置の機能ブロック構成を例示する図である。 実施形態に係るクライアント装置の機能ブロック構成を例示する図である。 実施形態に係る設定情報を例示する図である。 実施形態に係る画面情報を例示する図である。 実施形態に係る肯定応答を例示する図である。 第1の実施形態に係る画面データの送受信処理を例示する図である。 第2の実施形態に係る画面データの送受信処理を例示する図である。 第3の実施形態に係る画面データの送受信処理を例示する図である。 再設定処理を例示する図である。 実施形態に係るサーバ装置を実現するための情報処理装置のハードウェア構成を例示する図である。 実施形態に係るクライアント装置を実現するための情報処理装置のハードウェア構成を例示する図である。
 以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付した。
 上述のように、リモートデスクトップの一例では、サーバ装置に仮想デスクトップ環境が配置されている。そして、サーバ装置は、例えば仮想デスクトップの画面をキャプチャして得られた画像データをクライアント装置に送信する。なお、仮想デスクトップの画面をキャプチャするとは、例えば、サーバ装置が仮想デスクトップの画面の画像データを生成することであってもよい。クライアント装置では、サーバ装置から画像データを受信すると、その画像データを受信できたことを示す信号である肯定応答(ACK:ACKnowledgement)をサーバ装置に返信する。続いて、クライアント装置は、受信した画像データを例えばクライアント装置が備える表示装置の表示画面に表示することで、サーバ装置の仮想デスクトップの状態がクライアント装置の表示画面に映し出される。サーバ装置は、クライアント装置からの肯定応答を受信すると、仮想デスクトップの画面を再びキャプチャして得られた次の画面の画像データをクライアント装置に送信する。以上の処理を繰り返すことで、ユーザは仮想デスクトップの画面の状態をクライアント装置の表示画面で確認することができるため、クライアント装置において仮想デスクトップを操作することが可能となる。
 図1は、以上で例示したリモートデスクトップを提供するシステムにおけるサーバ装置と、クライアント装置との間のデータの送受信の流れを例示する図である。なお、以降の説明において、サーバ装置でキャプチャされる一連の仮想デスクトップの画面のそれぞれを時系列に区別するために、「画面」の用語の後に番号nを付した例えば「画面n」といった表記を用いる。付されている番号nは、サーバ装置で画面がキャプチャされた時系列の順番を表している。例えば、番号「1」が付加された「画面1」は、或る時点以降にサーバ装置で1番目にキャプチャされた仮想デスクトップの画面を表している。そして、「画面2」は「画面1」の次にサーバ装置でキャプチャされた画面を表している。また、以降の説明では、画面をキャプチャして得られた画像データを画面データと呼ぶ。更に、或る時点からn番目にサーバ装置でキャプチャされた画面の画像データを示す場合には「画面nデータ」と表記する。即ち、「画面1データ」は、「画面1」をキャプチャして得られた画像データである。また、「画面2データ」は「画面2」をキャプチャして得られた画像データである。
 図1に示すように、サーバ装置は、クライアント装置にリモートデスクトップの提供を開始すると、仮想デスクトップの画面(画面1)をキャプチャし、その画像データ(画面1データ)を取得する(図1の(1))。サーバ装置は、キャプチャした画面1データに、例えば圧縮処理等を行った後でその画面1データをクライアント装置に送信する(図1の(2))。クライアント装置は、画面1データを受信すると、画面1データを受信できたことを示す信号である肯定応答をサーバ装置に返信する(図1の(3))。続いて、クライアント装置は、受信した画面1データを例えばクライアント装置が備える表示装置の表示画面に表示することで(図1の(4))、ユーザに仮想デスクトップに表示されている画面を提供する。サーバ装置は、クライアント装置からの肯定応答を受信すると、仮想デスクトップの画面を再びキャプチャして次の画面(画面2)の画像データ(画面2データ)を取得する(図1の(5))。サーバ装置は、画面1の場合と同様に、キャプチャした画面2の画面2データに、例えば圧縮処理等を行った後でその画面2データをクライアント装置に送信する(図1の(6))。クライアント装置は、画面2データを受信すると、画面2データを正常に受信できたことを示す肯定応答をサーバ装置に返信(図1の(7))し、受信した画面2データを例えばクライアント装置が備える表示装置の表示画面に表示する(図1の(8))。例えば以上のような処理を繰り返すことで、クライアント装置の表示画面に、サーバ装置の仮想デスクトップに表示されている画面を順次表示し、リモートデスクトップ環境が提供される。
 以上の図1に示す例では、サーバ装置は送信した画面の画像データがクライアント装置で正常に受信できたことを肯定応答により確認した後で、次の画面の画像データを生成し送信している。そのため、クライアント装置の表示画面には、サーバ装置でキャプチャされた画面の順序と同じ順序で画面の画像データが表示され、ユーザはクライアント装置の表示画面で、仮想デスクトップの画面の経時変化を知ることができる。従って、ユーザは、例えば仮想デスクトップに対して実行した自身の操作に対する応答をクライアント装置の表示画面で知ることができる。
 しかしながら、クライアント装置からの肯定応答を待ってから次の画面の画像データを送信する上記の方式では、往復遅延時間が画面の更新間隔にそのまま反映されてしまう。そのため、往復遅延時間の長いネットワーク環境では、ユーザの操作に対する応答性が著しく低下してしまう。なお、ユーザの操作に対する応答性とは、例えば、ユーザがマウスやキーボードを操作(例えばカーソルの移動や文字の入力など)した時に、その操作がクライアント装置の表示画面に反映されるまでの時間であり、この時間が短いほど応答性は高い。
 このような往復遅延時間に起因する画面の更新間隔の長期化を抑制するために、サーバ装置がクライアント装置からの肯定応答の到着を待たずに次の画面の画像データを送信することが考えられる。図2は、サーバ装置が、クライアント装置からの肯定応答の到着を待たずに次の画面の画像データを送信する場合のデータの送受信の流れを例示する図である。
 図2の例では、サーバ装置は、クライアント装置にリモートデスクトップの提供を開始すると、仮想デスクトップの画面をキャプチャして画面1の画像データである画面1データを取得する(図2の(1))。そして、サーバ装置は、取得した画面1データに、例えば圧縮処理等を行った後でその画面1データをクライアント装置に送信する(図2の(2))。続いて、サーバ装置は、送信した画面1データに対するクライアント装置からの肯定応答の受信を待つことなく、次の仮想デスクトップの画面をキャプチャして画面2の画像データである画面2データを取得する(図2の(3))。そして、サーバ装置は、画面1の場合と同様に、取得した画面2データに、例えば圧縮処理等を行った後でその画面2データをクライアント装置に送信する(図2の(4))。以降、サーバ装置は、送信した画像データに対するクライアント装置からの肯定応答の受信を待たずに、所定の時間間隔で仮想デスクトップの画面をキャプチャして、圧縮処理等を行った後でその画像データをクライアント装置に順次送信する。
 一方、クライアント装置は、サーバ装置から送信されてきた画面1データを受信すると、正常に受信できたことを示す信号である肯定応答をサーバ装置に返信する(図2の(5))。続いて、クライアント装置は、受信した画面1データを例えばクライアント装置が備える表示装置の表示画面に表示する(図2の(6))。同様に、クライアント装置は、画面2データを受信すると、正常に受信できたことを示す肯定応答をサーバ装置に返信(図2の(7))し、受信した画面2データを表示画面に表示する(図2の(8))。以降、クライアント装置は、サーバ装置から送信されてきた画像データを受信すると、受信した画像データに対する肯定応答をサーバ装置に返信し、受信した画像データを表示画面に順次表示する。
 例えば以上の処理により、サーバ装置は、クライアント装置からの肯定応答を待たずに画面をキャプチャした画像をクライアント装置に送信するため、往復遅延時間が長い場合にも、クライアント装置における画像データの更新間隔の長期化を抑えることができる。
 なお、この様なクライアント装置からの肯定応答を待たずにサーバ装置が画面データを送信する構成にした場合、送信方式によっては、画面データが実際にキャプチャされた順序と、クライアント装置で受信される順序とが入れ替わってしまうことがある。即ち、例えば、図2において、先に送信した画面1データよりも後から送信した画面2データの方がクライアント装置で先に受信されてしまうことがある。リモートデスクトップでは、サーバ装置においてキャプチャされた画面の順序でクライアント装置においても画面データが表示されることが好ましい。これは、例えばユーザがマウスカーソルの移動の操作を行っているとする。この場合に、キャプチャした画面データの順序が入れ替わって表示されてしまうと、ユーザには実際に移動させたカーソルの移動方向とは逆方向にカーソルが動いたように見えてしまうといった不都合が生じてしまう。この様な不都合はユーザビリティを低下させる要因となるため、リモートデスクトップではサーバ装置がキャプチャした画面の順序でクライアント装置においても画面データが表示されるようにすることが好ましい。そのため、クライアント装置には、サーバ装置から受信した画像データを蓄積するためのバッファが設けられている。そして、サーバ装置は、送信する画像データに画面をキャプチャした順序を表す通し番号を付加してクライアント装置に送信する。クライアント装置では、受信した画面データをバッファに蓄積し、付加された通し番号に従って表示装置の表示画面に表示するため、順番通りに画面データを表示することが可能である。
 しかしながら、以上のような構成にしたとしても、クライアント装置のバッファのサイズには限りがあるため、例えば、バッファに蓄積できる数以上の画面データを送信してしまった場合、オーバーフローを引き起こす可能性がある。或いは、バッファを用いたとしても、サーバ装置からクライアント装置に可用帯域以上のデータを送信してしまう可能性がある。そのため、これらの事象が生じないように、例えばサーバ装置からのクライアント装置への画面データの送信数を制御する仕組みを設けることが好ましい。
 図3は、コマ落ちとスライディングウィンドウによる画面データの送信数の制御を例示する図である。スライディングウィンドウとは、或るサイズのウィンドウ(枠)を用意し、そのウィンドウに空きがある場合は画面データを送信し、空きが無い場合は空きができるまで送信を待機する仕組みである。スライディングウィンドウでは、ウィンドウサイズと、バッファサイズを適切に設定することで、例えばオーバーフローなどが起こるのを抑制することができる。
 図3の例では、ウィンドウサイズが3に設定されている(図3の(1))。そのため、ウィンドウの空サイズの初期値はウィンドウサイズの値と等しい3である。そして、サーバ装置が画面データを1つ送信すると空サイズから1減算し、クライアント装置からの肯定応答の受信時に空サイズに1加算することで、ウィンドウの空サイズは更新される。例えば、図3では、サーバ装置はクライアント装置にリモートデスクトップの提供を開始すると、仮想デスクトップの画面をキャプチャしてクライアント装置に画面データを送信する。このとき、ウィンドウの空サイズを1減少させる。即ち、ウィンドウの空サイズは3から2に変更される(図3の(2))。サーバ装置は、その後、所定の時間間隔が経過するたびに、ウィンドウの空サイズに空きがあるか否かを判定する。そして、空きがある(即ち、ウィンドウの空サイズが0ではない)場合には、仮想デスクトップの画面をキャプチャしてクライアント装置に送信し、そのたびにウィンドウの空サイズを1減算していく。ウィンドウの空サイズが0になると(図3の(3))、サーバ装置はそれ以上の画面データの送信を行わず、この送信しなかったタイミングでの仮想デスクトップの画面はコマ落ちする(図3の(4))。
 一方、サーバ装置は、クライアント装置から肯定応答を受信すると、ウィンドウの空サイズを1増加させる(図3の(5))。その結果、ウィンドウの空サイズは0から1になる。サーバ装置は、空サイズが0でなくなったため、次の画面の送信タイミングで、画面をキャプチャしてクライアント装置に送信し、空サイズを1減少させる。これにより、空サイズは再び0になる(図3の(6))。図3の例では、続く次の画面の送信タイミングよりも前に肯定応答が受信されるため(図3の(7))、次の画面の送信タイミングでウィンドウの空サイズは1である。そのため、サーバ装置は画面をキャプチャしてクライアント装置に送信し、空サイズを1減少させる(図3の(8))。以降、サーバ装置は、以上のように画面データを1つ送信すると空サイズを1減少させ、肯定応答の受信時に空サイズを1増加させる。そして、画面データの送信タイミングにおいて、空サイズが0でなければ画面データを送信し、0であればその送信タイミングでの画面の送信を行わずコマ落ちさせることを繰り返す。それによって、サーバ装置から同時期に送信される画面データの数がウィンドウ数を超えないように制御されるため、クライアント装置のバッファのオーバーフローや可用帯域以上の画面データを送信してしまうことが抑制できる。
 しかしながら、この様なコマ落ちとスライディングウィンドウを利用しても、画面の更新間隔には片寄りが生じてしまう。図4は、画面の更新間隔の片寄を例示する図である。図4において、スライディングウィンドウのウィンドウサイズは2に設定されている(図4の(1))。即ち、ウィンドウの空サイズの最大値は2である。サーバ装置は、図3を参照して説明したのと同様に、所定の時間間隔で、仮想デスクトップの画面をキャプチャしてクライアント装置へと送信し、送信のたびにウィンドウの空サイズを1減少させる(図4の(2))。ウィンドウの空サイズが0になると、その送信タイミングでの画面はクライアント装置に送信せずにコマ落ちさせる(図4の(3))。クライアント装置から、肯定応答を受信すると、ウィンドウの空サイズが1増加する。そのため、次の画面の送信タイミングにおいて、サーバ装置は画面をキャプチャしてクライアント装置へと送信し、再びウィンドウの空サイズを1減少させる(図4の(4))。以降、画面の送信タイミングにおいて、ウィンドウの空サイズが0であれば、そのタイミングでの送信を行わずにコマ落ちさせる。また、クライアント装置から、肯定応答を受信するとウィンドウの空サイズを1増加させる。そして、画面の送信タイミングにおいて、ウィンドウの空サイズが0でなければ、その画面の送信タイミングで、画面をキャプチャして画面データをクライアント装置に送信し、ウィンドウの空サイズを1減少させる。以上のようにして、サーバ装置の仮想デスクトップの画面の画像がクライアント装置に提供される。この場合に、図4に示されるように、クライアント装置における表示画面の更新間隔には片寄りが発生している。換言すると、表示画面の更新間隔が短く頻繁に更新される期間と、表示画面の更新間隔が長くなかなか更新されない期間とが存在している。
 この様な表示画面の更新間隔の片寄りは、例えばユーザが入力した操作に対する応答性に影響を与えるため、リモートデスクトップにおけるユーザビリティを低下させる要因となる。図5は、ユーザが入力した操作に対する表示画面の応答性を例示する図である。図5(a)は、ユーザが、例えばマウスカーソルの移動などの仮想デスクトップの画面の表示内容を変更する操作を入力し、その操作を通知する信号が、サーバ装置が画面4データを送信する直前にサーバで受信された場合の例を示している。この場合に、そのユーザの操作内容に応じて仮想デスクトップの画面が変更され、その変更された画面の内容は、次の画面4データの送信タイミングでキャプチャされた画面4データによりユーザに送信されることになる。
 一方、図5(b)では、ユーザの操作は、サーバ装置が画面4データを送信した直後に通知されている。画面4データを送信した後は、ウィンドウの空サイズが0であるため、画面データの送信が2回連続でコマ落ちしている。そのため、ユーザの操作が反映された画面データがサーバ装置から送信されるのは、コマ落ちを挟んで、その後に肯定応答が受信された後の画面5データの送信でやっとクライアント装置に送信されることになる。そのため、図5(a)の場合と比較して、図5(b)では、ユーザの操作がクライアント装置の表示画面に反映されるまでにかかる時間が、大幅に長くなっている。この様に画面の更新間隔の片寄りは、例えば、ユーザの操作に対する応答性のばらつきを増大させるため好ましくない。そこで、いくつかの実施形態では、サーバ装置による画面の送信間隔をほぼ一定にするために、例えば、サーバ装置による画面データの送信間隔を以下のように設定する。
 まず、クライアント装置において、サーバ装置とのリモートデスクトップ環境を構築するアプリケーションが保持するバッファのサイズを以下の式で算出する。
   バッファサイズ=使用可能帯域×往復遅延時間 …式1
 ここで、バッファサイズは、サーバ装置から送信されてきた画面の画像データを蓄積するためにクライアント装置に設けられたバッファのバッファサイズである。なお、サーバ装置にも同じサイズのバッファが設けられてもよい。使用可能帯域は、クライアント装置において、サーバ装置とのリモートデスクトップ環境を構築するアプリケーションが、サーバ装置とクライアント装置との間の通信において利用できる帯域幅である。往復遅延時間は、サーバ装置とクライアント装置との間の通信の往復でかかる時間である。往復遅延時間は、例えば、サーバ装置がパケットをクライアント装置に送信してから、そのパケットに対する応答がクライアント装置からサーバ装置に通知されるまでにかかる時間であってよい。或いは、クライアント装置がパケットをサーバ装置に送信してから、そのパケットに対する応答がサーバ装置からクライアント装置に通知されるまでにかかる時間であってよい。
 また、ウィンドウサイズは以下の式で設定されてもよい。
Figure JPOXMLDOC01-appb-M000001
 ここで、ウィンドウサイズは、上述のスライディングウィンドウで用いるウィンドウのサイズである。バッファサイズは、上記式1で算出された値を用いる。送信データサイズは、例えば、サーバ装置が送信してくる画面の画像データ(画面データ)の最大のデータサイズとして見積もられる値であってよい。送信データサイズは、例えば、クライアント装置の表示装置の表示画面の解像度や、仮想デスクトップ環境の設定、通信速度などに基づいて、予め設定することが可能な値である。一実施形態においては、送信データサイズは、リモートデスクトップの提供を受けるクライアント装置が備える表示装置の表示画面の解像度に合わせて画像データを作成した場合の最大のデータサイズであってよい。送信データサイズに画面データの最大のデータサイズを用いる場合、上記式2に示すように、例えば、バッファサイズを送信データサイズで除算すると、画面データがバッファに少なくとも何個入るかを見積もることができる。なお、上記式2では、バッファサイズを送信データサイズで除算して得られた実数の床関数を計算して整数化し、その整数値をウィンドウサイズとして算出している。
 サーバ装置による画面をキャプチャした画像データ(画面データ)の送信間隔は以下の式で設定されてもよい。
Figure JPOXMLDOC01-appb-M000002
 ここで、送信間隔はサーバ装置が、画面をキャプチャしてクライアント装置に画面データを送信する送信タイミングの間隔である。例えば、サーバ装置は、送信間隔の時間が経過するたびに、ウィンドウの空サイズが0か否かを確認する。そして、0でなければ画面をキャプチャして画面データをクライアント装置に送信し、ウィンドウサイズを1減算する。なお、式3に示される、往復遅延時間及び使用可能帯域は上記式1の説明で述べたのと同じであってよい。ウィンドウサイズ及び送信データサイズは、上記式2の説明で述べたのと同じであってよい。
 例えば、以上のようにして、ウィンドウサイズ及び送信間隔を設定すると、ウィンドウサイズが0になった次の送信タイミングの前に、往復遅延の時間が経過し、肯定応答が返ってくる。そのため、コマ落ちすることなく次の画面を送信することができ、サーバ装置による画面データの送信間隔をほぼ均一にすることができる。その結果、クライアント装置でも画面の更新間隔をほぼ均一にすることができる。なお、式1~式3で算出される送信間隔は、画面データの送信間隔をほぼ均一にしながらも、極力短い送信間隔となるようにも算出されている。そのため、式1~式3で算出される送信間隔では、送信間隔をほぼ均一にするために送信間隔が必要以上に長くなってしまうことも抑制されている。
 図6は、以上で述べた実施形態に係る送信間隔を用いることで、画面の更新間隔の片寄りが抑制できることを例示する図である。図6(a)には、図4に示したクライアント装置とサーバ装置との間のデータの送受信と同じ例が、図6(b)との比較のために示されている。図6(b)は、上記した実施形態に係る送信間隔を用いた場合の画面の更新間隔を例示する図である。
 図6(a)では、図4を参照して述べたように、コマ落ちが生じており、画面の更新間隔には片寄りが生じている。一方、上記した実施形態に係る送信間隔を用いた場合、図6(b)に示すように、ウィンドウサイズが0になった場合にも次の送信タイミングまでに肯定応答がサーバ装置に返ってくる。そのため、コマ落ちせずに一定間隔で画面データをクライアント装置に送信することができる。その結果、クライアント装置においても画面の更新間隔をほぼ一定にすることができる。
 図7は、上述の実施形態に係る送信間隔を用いることで、画面のユーザ操作に対する応答性が改善できることを例示する図である。図7(a)には、図5(b)に示したユーザが入力した操作に対する応答性と同じ例を図7(b)との比較のために示す。図7(b)は、上記した実施形態に係る送信間隔を用いた場合のユーザが入力した操作に対する応答性を例示する図である。
 図7(a)において、ユーザの操作は、画面4の画面4データを送った直後にサーバ装置に通知されている。画面4データを送信した後は、ウィンドウの空サイズが0であり、その後の肯定応答が受信されるまでに画面データの送信が2回コマ落ちしている。そのため、ユーザの操作が反映された画面データがサーバ装置から送信されるのは、肯定応答が受信された後の画面5データの送信時になってやっとクライアント装置に送信されている。そのため、図7(a)では、ユーザの操作がクライアント装置の表示画面に反映されるまでに時間がかかっている。一方、図7(b)においても、ユーザの操作は画面4の画面4データを送った直後にサーバ装置に通知されている。しかしながら、図7(b)では上述した式3により算出された送信間隔を用いているため、ウィンドウサイズが0になったとしても、その次の送信タイミングまでには肯定応答が受信されており、結果としてコマ落ちが生じていない。そのため、図7(b)では、送信間隔が経過するたびに、画面データがサーバ装置からクライアント装置に送信され、図7(a)のような応答に特に時間がかかるケースと比較した場合、応答性が改善している。また、図7(b)では、ユーザに均一な応答時間で操作に対する応答を返すことができる。
 図8は、サーバ装置の仮想デスクトップの画面と、クライアント装置の表示画面とを例示する図である。図8(a)は、サーバ装置が提供する仮想デスクトップの画面を例示している。また、図8(b)は、図6(a)で例示した片寄がある更新間隔で更新されるクライアント装置の表示画面を例示している。また、図8(c)は、図6(b)で例示した実施形態に係る更新間隔で更新されるクライアント装置の表示画面を例示している。図8(a)は、仮想デスクトップの画面においてオブジェクト800が上から下へと移動する様子を、画面を時系列に並べて示している。この画面をキャプチャした画像データが、クライアント装置に送信される。図8(b)及び図8(c)では、サーバ装置から受信した画面の画像データをクライアント装置の表示画面に表示する様子を示している。図8(b)では、画面の更新間隔に片寄があるため、更新されない長い期間が存在している。そのため、オブジェクト800は、更新されない期間をはさんで唐突に上下に大きな距離を移動している。一方、図8(c)では、画面の更新間隔がほぼ一定であり、オブジェクト800の位置の変化を均一に取得できている。そのため、ユーザは自身の操作に対する応答などの仮想デスクトップの画面の変化を、クライアント装置の表示画面に表示される画面データにおける変化から確認しやすい。
 以上で例示したように、画面の更新間隔に短い部分と長い部分が存在する場合、ユーザの操作のタイミングによっては、その操作が反映された表示画面を得るまでに長い部分の更新間隔の時間をそのまま待たなければならない状況が存在する(例えば図7(a))。そのため、例えば、図6(a)に示すように、画面の更新間隔に部分的に短い部分があっても、他の更新間隔の長い部分において、その長い更新間隔を待つことのデメリットの方がリモートデスクトップを利用するユーザにとっては大きい状況が存在する。そのため、更新間隔の片寄をなくして、例えば図7(a)に例示する応答に特に時間のかかるケースを抑制し、全体として均一な応答性を保った方が、ユーザが体感する応答速度や操作性が向上し、ユーザビリティが向上し得る。また、画面の更新間隔に片寄がある場合よりも均一であるほうが、ユーザは自身の入力した操作が表示画面に及ぼす影響(例えばカーソル移動の速度等)をその応答から認識しやすい。そのため、画面の更新間隔が均一である方がユーザビリティを向上し得る。例えば以上のことから、上述の式1から式3で算出された送信間隔を用いることで、画面の更新間隔を極力短く保ちながらも更新間隔をほぼ一定とできることは有用である。
 以下には、上述の式3により得られた送信間隔を利用する実施形態を述べる。図9は、実施形態に係るリモートデスクトップを提供するシステム900を例示する図である。システム900は、サーバ装置901及びクライアント装置902を含んでおり、サーバ装置901とクライアント装置902は、ネットワーク903により接続されている。クライアント装置902は、例えばディスプレーなどの表示装置905を含んでいる。クライアント装置902は、例えば、サーバ装置901からネットワーク903を介して送信されてくる仮想デスクトップの画面をキャプチャした画像データである画面データを受信し、表示装置905に表示させる。
 図10は、実施形態に係るサーバ装置901の機能ブロック構成を例示する図である。サーバ装置901は、例えば、制御部1000及び記憶部1010を含んでいる。サーバ装置901の制御部1000は、例えば接続確立部1011、ユーザ操作受信部1012、画面更新部1013、設定部1014、画面データ取得部1015などの機能部1001を含んでいる。また、制御部1000は、例えば、送信可否判定部1016、画面情報送信部1017、調整部1018、送信部1019などの機能部1001を含んでいる。サーバ装置901の記憶部1010は、例えば、プログラム1020を記憶している。サーバ装置901の制御部1000は、プログラム1020を読み出して実行することで例えば接続確立部1011、ユーザ操作受信部1012、画面更新部1013、設定部1014、画面データ取得部1015などの機能部1001として機能する。サーバ装置901の制御部1000は、プログラム1020を読み出して実行することで例えば、送信可否判定部1016、画面情報送信部1017、調整部1018、送信部1019などの機能部1001として機能する。なお、送信可否判定部1016及び画面情報送信部1017は送信部1019としても機能する。ここで例えば、接続確立部1011は、クライアント装置902との間の通信接続を確立する。ユーザ操作受信部1012は、サーバ装置901が提供する仮想デスクトップ環境に対して、クライアント装置902で入力されたユーザの操作を通知する信号を受信する。画面更新部1013は、ユーザ操作受信部1012で受信されたユーザの操作を通知する信号に従って処理を実行し、仮想デスクトップの画面に表示する内容を更新する。その他の機能部1001の詳細については後述する。
 図11は、実施形態に係るクライアント装置902の機能ブロック構成を例示する図である。クライアント装置902は、例えば、制御部1100及び記憶部1110を含んでいる。クライアント装置902の制御部1100は、例えば接続確立部1111、ユーザ操作取得部1112、ユーザ操作送信部1113、設定部1114、画面情報受信部1115などの機能部1101を含んでいる。また、クライアント装置902の制御部1100は、肯定応答送信部1116、画面更新部1117などの機能部1101を含んでいる。クライアント装置902の記憶部1110は、例えば、プログラム1120を記憶している。クライアント装置902の制御部1100は、プログラム1120を読み出して実行することで例えば接続確立部1111、ユーザ操作取得部1112、ユーザ操作送信部1113、設定部1114、画面情報受信部1115などの機能部1101として機能する。また、クライアント装置902の制御部1100は、プログラム1120を読み出して実行することで例えば肯定応答送信部1116、画面更新部1117などの機能部1101として機能する。ここで例えば、接続確立部1111は、サーバ装置901との間の通信接続を確立する。ユーザ操作取得部1112は、サーバ装置901から提供される仮想デスクトップに対してクライアント装置902で入力されたユーザの操作を取得する。ユーザ操作送信部1113は、ユーザ操作取得部1112で取得されたユーザの操作を通知する信号を、サーバ装置901に送信する。その他の各機能部1101の詳細については後述する。
 図12は、実施形態に係る設定情報1200を例示する図である。設定情報1200は、例えば、サーバ装置901及びクライアント装置902の間の通信で利用するネットワーク環境の情報を通知する情報である。設定情報1200は、例えば、ヘッダ情報、識別情報、使用可能帯域、往復遅延時間を含んでいる。ヘッダ情報は、例えば、サーバ装置901及びクライアント装置902の間の通信の確立に利用される情報を格納している。ヘッダ情報は、例えば、IPヘッダ、TCPヘッダ(UDPヘッダ)等の情報を含んでいてよい。識別情報は、例えば設定情報1200を、後述する画面情報1300及び肯定応答1400と識別するための情報を格納している。例えば、設定情報1200の識別情報に値“0”を格納し、画面情報1300及び肯定応答1400の識別情報には値“1”を格納することでこれらの情報を識別できるように構成してもよい。使用可能帯域は、上述したように、例えば、リモートデスクトップ環境を構築するアプリケーションが、サーバ装置とクライアント装置との間の通信において利用できる帯域幅であり、その帯域幅の情報を格納している。使用可能帯域は、例えばクライアント装置902又はサーバ装置901によって測定される。往復遅延時間は、上述したように、例えば、サーバ装置とクライアント装置との間でパケットが往復するのにかかる時間であり、その往復遅延時間の情報を格納している。往復遅延時間は、例えばサーバ装置901又はクライアント装置902によって測定される。
 図13は、実施形態に係る画面情報1300を例示する図である。画面情報1300は、例えば、サーバ装置901がキャプチャした仮想デスクトップの画面の画像データをクライアント装置902に通知する情報である。画面情報1300は、例えば、ヘッダ情報、識別情報、画面番号、分割番号、画面データを含んでいる。ヘッダ情報は、例えば、サーバ装置901及びクライアント装置902の間の通信の確立に利用される情報を格納している。ヘッダ情報は、例えば、IPヘッダ、TCPヘッダ(UDPヘッダ)等の情報を含んでいてよい。識別情報は、例えば、上述の設定情報1200と、画面情報1300及び後述の肯定応答1400とを識別するための情報を格納している。例えば、設定情報1200の識別情報に値“0”を格納し、画面情報1300及び肯定応答1400の識別情報には値“1”を格納することでこれらの情報を識別できるように構成してもよい。画面番号には、例えば、サーバ装置901からクライアント装置902へと送信される画面情報1300に対して順に割り振った通し番号が格納される。画面番号は、例えば、サーバ装置901がクライアント装置902にリモートデスクトップの提供を開始した以降に送信された画面情報1300に対して順に割り振られた番号であってよい。また、分割番号は、例えばサーバ装置901がキャプチャした1つの画面に対する画面データを分割してクライアント装置902に送る場合に、その分割により得られた分割画面データに対して付される番号を格納している。画面データは、例えば、サーバ装置901がキャプチャした仮想デスクトップの画面の画像データである。なお、画面データを分割してクライアント装置902に送る場合には、画面データには、分割番号に対応する分割画面データが格納される。
 図14は、実施形態に係る肯定応答1400を例示する図である。肯定応答1400は、例えば、クライアント装置902がサーバ装置901から画面データを受信した場合に、その画面データを受信できたことをサーバ装置901に通知するための情報である。肯定応答1400は、例えば、ヘッダ情報、識別情報、画面番号を含んでいる。ヘッダ情報は、例えば、サーバ装置901及びクライアント装置902の間の通信の確立に利用される情報を格納している。ヘッダ情報は、例えば、IPヘッダ、TCPヘッダ(UDPヘッダ)等の情報を含んでいてよい。識別情報は、例えば、上述の設定情報1200と、画面情報1300及び肯定応答1400とを識別するための情報を格納している。例えば、設定情報1200の識別情報に値“0”を格納し、画面情報1300及び肯定応答1400の識別情報には値“1”を格納することでこれらの情報を識別できるように構成してもよい。画面番号には、例えば、クライアント装置902が、サーバ装置901から画面データを含む画面情報1300を正常に受信できた場合に、その画面情報1300の画面番号に格納されている番号が格納される。
 図15は、第1の実施形態に係るリモートデスクトップを提供するシステム900においてサーバ装置901の制御部1000及びクライアント装置902の制御部1100が実行する画面データの送受信処理を例示する図である。図15の左側の動作フローはサーバ装置901が実行する処理であり、右側の動作フローはクライアント装置902が実行する処理である。なお、サーバ装置901が実行する処理と、クライアント装置902が実行する処理とを識別しやすいように、図15及びその説明では、処理の各ステップに、サーバ装置901が実行する処理の場合には“S”を付した。また、クライアント装置902が実行する処理の場合には“C”を付した。
 まず、図15の左側の動作フローを参照し、サーバ装置901の制御部1000が実行する処理について説明する。図15のサーバ装置901が実行する処理の動作フローは、例えば、サーバ装置901の制御部1000が記憶部1010に格納されているプログラム1020を読み出して実行することで実施される。一実施形態においては、クライアント装置902において、サーバ装置901とのリモートデスクトップ環境を構築するアプリケーションが実行され、サーバ装置901とクライアント装置902との間の通信が確立すると、図15の左側の動作フローは開始する。
 ステップS1501においてサーバ装置901の制御部1000は、クライアント装置902から設定情報1200を受信する。続いて、ステップS1502においてサーバ装置901の制御部1000は、設定情報1200に含まれる使用可能帯域、及び往復遅延時間を用いて、上記式1によりバッファサイズの値を算出する。式1により算出されるバッファサイズは、サーバ装置901が送信した画面情報1300を蓄積するために、クライアント装置902に設けられるバッファのバッファサイズである。なお、算出されたクライアント装置902に設けられるバッファのバッファサイズと同じサイズのバッファを、サーバ装置901に設けてもよい。換言すると、サーバ装置901のバッファも、上記式1により算出されたバッファサイズで設けられてよい。サーバ装置901に設けられるバッファは、例えば、クライアント装置902に画面情報1300を送信するために用いられる。続いて、サーバ装置901の制御部1000は、例えば予め記憶部1010に格納されている送信データサイズと、算出したバッファサイズとを用いて上記式2によりウィンドウサイズの値を算出する。更に、サーバ装置901の制御部1000は、得られたウィンドウサイズと、往復遅延時間とを用いて、又は、送信データサイズと、使用可能帯域とを用いて、上記式3により送信間隔の値を算出する。そして、サーバ装置901の制御部1000は、以上で算出したバッファサイズの値、ウィンドウサイズの値、及び送信間隔の値を、バッファサイズ、ウィンドウサイズ、及び送信間隔としてそれぞれ設定する。
 ステップS1503において、サーバ装置901の制御部1000は、設定されたウィンドウサイズの値を、ウィンドウの空サイズの値を格納する変数であるNに設定する。ステップS1504において、サーバ装置901の制御部1000は、接続されているクライアント装置902に提供する仮想デスクトップの画面をキャプチャし、例えば圧縮等の処理を行って、クライアント装置902に送信するための画面データを生成する。ステップS1505においてサーバ装置901の制御部1000は、Nが0よりも大きいか否かを判定する。換言すると、サーバ装置901の制御部1000は、ウィンドウの空サイズに空があるか否かを判定する。Nが0よりも大きく空サイズに空きがある場合(ステップS1505がYes)、フローはステップS1506へと進む。
 ステップS1506において、サーバ装置901の制御部1000は、ステップS1504で生成された画面データを含む画面情報1300を生成し、クライアント装置902に送信する。なお、画面情報1300の画面番号には、サーバ装置901からクライアント装置902へと送信される画面情報1300に対して順に割り振った通し番号が格納される。画面番号は、例えば、サーバ装置901がクライアント装置902にリモートデスクトップの提供を開始した以降に送信された画面情報1300に対して順に割り振られた番号であってよい。また、画面データを分割して送信する場合には、分割された分割画面データが画面データのどの部分にあたるかを示す分割番号を含む画面情報1300を生成し、送信する。ステップS1507において、サーバ装置901の制御部1000は、クライアント装置902に送信した画面情報1300の分を空サイズから減らすために、N=N-1を計算し、空サイズ:Nの値を更新する。空サイズ:Nの値を更新すると、フローはステップS1509へと進む。
 一方、ステップS1505においてNが0よりも大きくなく空サイズに空きがない場合(ステップS1505がNo)、フローはステップS1508へと進む。ステップS1508においてサーバ装置901の制御部1000は、ステップS1504で生成した画面データをクライアント装置902に送信せずに例えば破棄し、結果として、ステップS1504で生成した画面データをコマ落ちさせる。ステップS1509において、サーバ装置901の制御部1000は、ステップS1504で画面データを生成してからステップS1502で設定した送信間隔の時間が経過するまで待つことで、送信間隔を調整する。
 また、ステップS1509において、ステップS1504で画面データを生成してから送信間隔の時間が経過するまでの期間中にクライアント装置902から肯定応答1400を受信したとする。この場合には、その都度、サーバ装置901の制御部1000はN=N+1を計算し、空サイズ:Nの値を更新する。換言すると、肯定応答1400を受信した場合には、その分だけウィンドウの空サイズが増えるため、Nに1を加算することで、空サイズ:Nの値を更新する。ステップS1509において、ステップS1504で画面データを生成してからステップS1502で設定した送信間隔の時間が経過すると、フローはステップS1504へと戻る。
 続いて、図15の右側の動作フローを参照し、クライアント装置902の制御部1100が実行する処理について説明する。図15のクライアント装置902が実行する処理の動作フローは、例えば、クライアント装置902の制御部1100が記憶部1110に格納されているプログラム1120を読み出して実行することで実施される。一実施形態においては、クライアント装置902において、サーバ装置901とのリモートデスクトップ環境を構築するアプリケーションが実行され、サーバ装置901とクライアント装置902との間の通信が確立すると、図15の右側の動作フローは開始する。
 ステップC1501においてクライアント装置902の制御部1100は、ネットワーク環境を測定する。クライアント装置902の制御部1100は、例えば、サーバ装置901にパケットを送信してから、その応答が返ってくるまでの時間を計測することで、サーバ装置901との間の通信の往復遅延時間を計測する。また、クライアント装置902は、例えば、サーバ装置901との間でリモートデスクトップ環境を構築するアプリケーションが利用可能な帯域幅を使用可能帯域として計測する。ステップC1502でクライアント装置902の制御部1100は、得られた往復遅延時間と使用可能帯域から上記式1により、サーバ装置901から送信されてくる画面情報1300に含まれる情報を蓄積するためのバッファのバッファサイズを算出し設定する。ステップC1503においてクライアント装置902の制御部1100は、ステップC1501で測定した往復遅延時間と、使用可能帯域とから設定情報1200を生成し、サーバ装置901へと送信する。ステップC1504において、クライアント装置902の制御部1100は、サーバ装置901から送信されてきた画面情報1300を受信し、画面情報1300をバッファへ保存する。なお、ここでバッファに保存する情報は、画面情報1300に含まれる例えば画面番号、及び画面データなどの一部の情報であってもよい。
 ステップC1505でクライアント装置902の制御部1100は、受信した画面情報1300に含まれている画面番号を含む肯定応答1400を生成し、サーバ装置901に送信する。ステップC1506でクライアント装置902の制御部1100は、バッファに保存されている画面情報1300を、画面番号の順番に並べ替える。これにより、バッファに保存されている画面情報1300は、サーバ装置901から送信されてきた順番に並べ替えられる。
 ステップC1507でクライアント装置902の制御部1100は、バッファに表示すべき画面情報1300があるか否かを判定する。表示すべき画面情報1300とは、例えば、既に表示画面に画面データを表示させている場合には、その表示中の画面データの次の画面番号を含む画面情報1300である。例えば、リモートデスクトップ環境を構築してから既に表示装置905の表示画面に画面データを表示しており、その表示中の画面データの画面番号が“20”であるとする。この場合には、その次の番号の“21”の画面番号を有する画面情報1300が表示すべき画面情報1300であってよい。また、例えば未だ表示画面に画面データを表示させておらず、サーバ装置901から送信されてきた最初の画面情報1300を表示させる場合は、表示すべき画面情報1300は最初の画面情報1300であることを示す画面番号を含む画面情報1300である。例えば、画面番号にリモートデスクトップ環境が構築されてから送信される画面情報1300に1番から順に増加する番号を割り振る場合には、画面情報1300の画面番号に“1”が格納されている画面情報1300が表示すべき画面情報1300である。ステップC1507においてバッファに表示すべき画面情報1300が無い場合(ステップC1507がNo)には、フローはステップC1504へと戻り、新たに画面情報1300が受信されるのを待つ。バッファに表示すべき画面情報1300がある場合(ステップC1507がYes)、フローはステップC1508へと進む。
 ステップC1508において、クライアント装置902の制御部1100は、ステップC1507において表示すべきと判定された画面情報1300に含まれる画面データを表示画面に表示することで表示画面を更新する。そして、クライアント装置902の制御部1100は、バッファから表示した画面データを含む画面情報1300を消去し、フローはステップC1507へと戻る。
 以上の図15で述べた動作フローにより、サーバ装置901は、上述の式3によって算出された送信間隔で画面情報1300を生成し、クライアント装置902へと送信する。この送信間隔は、例えばコマ落ちを抑制し、送信間隔をほぼ一定にするような長さに設定されているため、サーバ装置901は設定された送信間隔が経過するたびに画面情報1300をクライアント装置902へ送信することができる。そのため、クライアント装置902では、ほぼ一定の間隔で画面情報1300を受信することができる。結果として、クライアント装置902の表示画面をほぼ一定の更新間隔で更新することができ、ユーザビリティが向上する。
 以上の図15の動作フローにおいて、ステップS1501からステップS1503までの処理では、サーバ装置901の制御部1000は、例えば、設定部1014として機能する。また、ステップS1504の処理では、サーバ装置901の制御部1000は、例えば、画面データ取得部1015として機能する。ステップS1505の処理では、サーバ装置901の制御部1000は、例えば、送信可否判定部1016として機能する。ステップS1506からステップS1507の処理では、サーバ装置901の制御部1000は、例えば、画面情報送信部1017として機能する。ステップS1508からステップS1509までの処理では、サーバ装置901の制御部1000は、例えば、調整部1018として機能する。なお、送信可否判定部1016及び画面情報送信部1017は、ステップS1505からステップS1507において送信部1019として機能する。
 また、ステップC1501からステップC1503までの処理では、クライアント装置902の制御部1100は、例えば、設定部1114として機能する。また、ステップC1504の処理では、クライアント装置902の制御部1100は、例えば、画面情報受信部1115として機能する。ステップC1505の処理では、クライアント装置902の制御部1100は、例えば、肯定応答送信部1116として機能する。ステップC1506からステップC1508までの処理では、クライアント装置902の制御部1100は、例えば、画面更新部1117として機能する。
 続いて、図16を参照して、第2の実施形態を説明する。第1の実施形態では、ネットワーク環境をクライアント装置902で測定する場合を例示した。第2の実施形態では、ネットワーク環境をサーバ装置901で測定する場合を例示する。
 図16は、第2の実施形態に係るリモートデスクトップ環境を提供するシステム900においてサーバ装置901の制御部1000及びクライアント装置902の制御部1100が実行する画面データの送受信処理を例示する図である。図16の左側の動作フローはサーバ装置901が実行する処理であり、右側の動作フローはクライアント装置902が実行する処理である。なお、サーバ装置901が実行する処理と、クライアント装置902が実行する処理とを識別しやすいように、図16及びその説明では、処理の各ステップに、サーバ装置901が実行する処理の場合には“S”を付した。また、クライアント装置902が実行する処理の場合には“C”を付した。
 まず、図16の左側の動作フローを参照し、サーバ装置901の制御部1000が実行する処理について説明する。図16のサーバ装置901が実行する処理の動作フローは、例えば、サーバ装置901の制御部1000が記憶部1010に格納されているプログラム1020を読み出して実行することで実施される。一実施形態においては、クライアント装置902において、サーバ装置901とのリモートデスクトップ環境を構築するアプリケーションが実行され、サーバ装置901とクライアント装置902との間の通信が確立すると、図16の左側の動作フローは開始する。
 ステップS1601においてサーバ装置901の制御部1000は、ネットワーク環境を測定する。サーバ装置901の制御部1000は、例えば、クライアント装置902にパケットを送信してから、その応答が返ってくるまでの時間を計測することで、クライアント装置902との間の通信の往復遅延時間を計測する。また、サーバ装置901は、例えば、クライアント装置902との間でリモートデスクトップ環境を構築するアプリケーションが利用可能な帯域幅を使用可能帯域として計測する。ステップS1602においてサーバ装置901の制御部1000は、測定した往復遅延時間と、使用可能帯域とを含む設定情報1200を生成し、クライアント装置902に送信する。
 ステップS1603においてサーバ装置901の制御部1000は、ステップS1601で測定した使用可能帯域、及び往復遅延時間を用いて、上記式1によりバッファサイズの値を算出する。なお、式1により算出されるバッファサイズは、サーバ装置901から送信されてきた画面情報1300を蓄積するために、クライアント装置902に設けられるバッファのバッファサイズである。なお、算出されたクライアント装置902に設けられるバッファのバッファサイズと同じサイズのバッファを、サーバ装置901に設けてもよい。サーバ装置901に設けられるバッファは、クライアント装置902に画面情報1300を送信するために用いられる。換言すると、サーバ装置901のバッファも、上記式1により算出されたバッファサイズで設けられてよい。続いて、サーバ装置901の制御部1000は、例えば予め記憶部1010に格納されている送信データサイズと、算出したバッファサイズとを用いて上記式2によりウィンドウサイズの値を算出する。更に、サーバ装置901の制御部1000は、得られたウィンドウサイズと往復遅延時間とを用いて、又は、送信データサイズと使用可能帯域とを用いて、上記式3により送信間隔の値を算出する。そして、サーバ装置901の制御部1000は、以上で算出したバッファサイズの値、ウィンドウサイズの値、及び送信間隔の値を、バッファサイズ、ウィンドウサイズ、及び送信間隔としてそれぞれ設定する。
 ステップS1604において、サーバ装置901の制御部1000は、クライアント装置902から同期信号を受信するのを待機する。これは、第1の実施形態では、サーバ装置901がステップS1501で設定情報1200を受信した際には、クライアント装置902で既にステップC1501からステップC1503の処理が完了している。従って、サーバ装置901がステップS1501で設定情報1200を受信した際には、クライアント装置902では、ステップC1504でサーバ装置901から送信されてくる画面情報1300を受信する準備が完了している。一方、第2の実施形態では、サーバ装置901が送信した設定情報1200がクライアント装置902に受信されてから、クライアント装置902の処理が進む。そのため、サーバ装置901の処理がS1604に進んだ際に、クライアント装置902が画面情報1300を受信する準備がまだできていない可能性がある。そのため、第2の実施形態では、サーバ装置901は、ステップS1604において、画面情報1300を受信する準備ができたことを示す同期信号をクライアント装置902から受信してから処理がステップS1605へと進める。
 以降のステップS1605からステップS1611までの処理は、例えば、図15のサーバ装置901が実行するステップS1503からステップS1509までの処理とそれぞれ対応している。例えば、サーバ装置901の制御部1000は、ステップS1605からステップS1611において、対応するステップS1503からステップS1509の処理と同様の処理を実行してもよい。ステップS1605からステップS1611の処理により、サーバ装置901は、画面情報1300をクライアント装置902に送信する。また、サーバ装置901は、ステップS1603で設定したウィンドウサイズと送信間隔、及びクライアント装置902から受信される肯定応答1400により画面情報1300の送信間隔を制御する。
 続いて、図16の右側の動作フローを参照し、クライアント装置902の制御部1100が実行する処理について説明する。図16のクライアント装置902が実行する処理の動作フローは、例えば、クライアント装置902の制御部1100が記憶部1110に格納されているプログラム1120を読み出して実行することで実施される。一実施形態においては、クライアント装置902において、サーバ装置901とのリモートデスクトップ環境を構築するアプリケーションが実行され、サーバ装置901とクライアント装置902との間の通信が確立すると、図16の右側の動作フローは開始する。
 ステップC1601においてクライアント装置902の制御部1100は、サーバ装置901から設定情報1200を受信する。ステップC1602においてクライアント装置902の制御部1100は、受信した設定情報1200に含まれる往復遅延時間と、使用可能帯域から上記式1により、バッファのバッファサイズを算出し設定する。このバッファは、例えば、クライアント装置902において、サーバ装置901から送信されてくる画面情報1300に含まれる情報を蓄積するために用いられる。続いて、ステップC1603においてクライアント装置902の制御部1100は、サーバ装置901から画面情報1300を受信する準備ができたことを示す同期信号を生成し、サーバ装置901に送信する。
 以降のステップC1604からステップC1608までの処理は、例えば、図15のクライアント装置902が実行するステップC1504からステップS1508までの処理とそれぞれ対応している。例えば、クライアント装置902の制御部1100は、ステップC1604からステップC1608において、対応するステップC1504からステップS1508の処理と同様の処理を実行してもよい。ステップC1604からステップC1608の処理により、サーバ装置901は、画面情報1300を受信するとバッファへと保存し、その肯定応答1400をサーバ装置901へと返す。そして、バッファに保存された画面情報1300の画面データを画面番号の順序で表示装置905の表示画面に表示する。また、表示した画面データを含む画面情報1300をバッファから消去する。
 以上の図16で述べた動作フローにより、サーバ装置901は、上述の式3によって算出された送信間隔で画面情報1300を生成し、クライアント装置902へと送信する。この送信間隔は、例えばコマ落ちを抑制し、送信間隔をほぼ一定にするような長さに設定されているため、サーバ装置901は設定された送信間隔が経過するたびに画面情報1300をクライアント装置902へ送信することができる。そのため、クライアント装置902では、ほぼ一定の間隔で画面情報1300を受信することができる。結果として、クライアント装置902の表示画面をほぼ一定の更新間隔で更新することができ、ユーザビリティが向上する。
 以上の図16の動作フローにおいて、ステップS1601からステップS1605までの処理では、サーバ装置901の制御部1000は、例えば、設定部1014として機能する。また、ステップS1606の処理では、サーバ装置901の制御部1000は、例えば、画面データ取得部1015として機能する。ステップS1607の処理では、サーバ装置901の制御部1000は、例えば、送信可否判定部1016として機能する。ステップS1608からステップS1609の処理では、サーバ装置901の制御部1000は、例えば、画面情報送信部1017として機能する。ステップS1610からステップS1611までの処理では、サーバ装置901の制御部1000は、例えば、調整部1018として機能する。なお、送信可否判定部1016及び画面情報送信部1017は、ステップS1607からステップS1609において送信部1019として機能する。
 また、ステップC1601からステップC1603までの処理では、クライアント装置902の制御部1100は、例えば、設定部1114として機能する。また、ステップC1604の処理では、クライアント装置902の制御部1100は、例えば、画面情報受信部1115として機能する。ステップC1605の処理では、クライアント装置902の制御部1100は、例えば、肯定応答送信部1116として機能する。ステップC1606からステップC1608までの処理では、クライアント装置902の制御部1100は、例えば、画面更新部1117として機能する。
 続いて、図17及び図18を参照して、第3の実施形態を説明する。第3の実施形態では、送信間隔を再設定する場合の例を説明する。図17は、第3の実施形態に係るリモートデスクトップを提供するシステム900においてサーバ装置901の制御部1000及びクライアント装置902の制御部1100が実行する画面データの送受信処理を例示する図である。図17の左側の動作フローはサーバ装置901が実行する処理であり、右側の動作フローはクライアント装置902が実行する処理である。なお、サーバ装置901が実行する処理と、クライアント装置902が実行する処理とを識別しやすいように、図17及び図18並びにその説明では、処理の各ステップに、サーバ装置901が実行する処理の場合には“S”を付した。また、クライアント装置902が実行する処理の場合には“C”を付した。
 まず、図17の左側の動作フローを参照し、サーバ装置901の制御部1000が実行する処理について説明する。図17のサーバ装置901が実行する処理の動作フローは、例えば、サーバ装置901の制御部1000が記憶部1010に格納されているプログラム1020を読み出して実行することで実施される。一実施形態においては、クライアント装置902において、サーバ装置901とのリモートデスクトップ環境を構築するアプリケーションが実行され、サーバ装置901とクライアント装置902との間の通信が確立すると、図17の左側の動作フローは開始する。
 ステップS1701においてサーバ装置901の制御部1000は、設定処理を実行する。例えば、ネットワーク環境の測定をクライアント装置902で行う場合には、サーバ装置901の制御部1000は、設定処理において図15のステップS1501からステップS1502の処理を実行してもよい。また、例えば、ネットワーク環境の測定をサーバ装置901が行う場合には、サーバ装置901の制御部1000は、設定処理において図16のステップS1601からステップS1604の処理を実行してもよい。続いて、ステップS1702において、サーバ装置901の制御部1000は、設定処理で設定したウィンドウサイズの値を、ウィンドウの空サイズを格納する変数であるNに設定する。ステップS1703において、サーバ装置901の制御部1000は、nCount及びnSize[]に0を、並びにnAckPlus(補正加算値とも呼ぶ)に1を設定する。なお、nCount、nSize[]、及びnAckPlusは以降の処理で利用される変数であり、その詳細については後述する。
 ステップS1704において、サーバ装置901の制御部1000は、接続されたクライアント装置902にリモートデスクトップを提供する仮想デスクトップの画面をキャプチャする。そして、得られた画像データに例えば圧縮等の処理を行い、クライアント装置902に送信するための画面データを生成する。ステップS1705においてサーバ装置901の制御部1000は、Nが1以上であるか否かを判定する。換言すると、サーバ装置901の制御部1000は、ウィンドウの空サイズに空きがあるか否かを判定する。
 Nが1よりも小さく空サイズに空きがない場合(ステップS1705がNo)、フローはステップS1711へと進む。ステップS1711ではサーバ装置901の制御部1000は、ステップS1704で生成した画面情報1300をクライアント装置902へと送信せずに例えば破棄し、結果として、ステップS1704で生成した画面データをコマ落ちさせる。
 一方、ステップS1705においてNが1以上であり空サイズに空きがある場合(ステップS1705がYes)、フローはステップS1706へと進む。ステップS1706において、サーバ装置901の制御部1000は、ステップS1704で生成された画面データと、その画面データに対して割り振った通し番号を含む画面情報1300を生成し、クライアント装置902に送信する。なお、画面データを分割して分割画面データを送信する場合には、分割された分割画面データと、その分割画面データが画面データのどの部分にあたるかを示す分割番号とを含む画面情報1300を生成し、送信する。ステップS1707において、サーバ装置901の制御部1000は、N=N-1を計算し、空サイズ:Nの値を更新する。空サイズ:Nの値を更新すると、フローはステップS1708へと進む。
 ステップS1708においてサーバ装置901の制御部1000は、送信した画面情報1300のデータサイズをnSize[nCount]に格納し、現在のnCountの値に対応する画面情報1300のデータサイズを記録する。その後、nCountの値に1を加算して、nCountの値を更新する。ステップS1709においてサーバ装置901の制御部1000は、nCountの値が所定の回数よりも大きいか否かを判定する。所定の回数以下である場合(ステップS1709がNo)、フローはステップS1712へと進む。一方、所定の回数よりも大きい場合(ステップS1709がYes)、フローはステップS1710へと進む。
 ステップS1710においてサーバ装置901の制御部1000は、再設定処理を実行する。再設定処理の詳細については図18を参照して後述するが、再設定処理により、例えば、ウィンドウサイズ、送信間隔などの値が再設定される。また、再設定されたウィンドウサイズに合わせて現在の空サイズを示すNの値も再設定される。ステップS1712において、サーバ装置901の制御部1000は、ステップS1704で画面データを生成してからステップS1701で設定した送信間隔の時間が経過するまで待つことで、送信間隔を調整する。
 また、ステップS1712において、ステップS1704で画面データを生成してから送信間隔の時間が経過するまでの期間中に、クライアント装置902から肯定応答1400を受信したとする。この場合には、その都度、サーバ装置901の制御部1000はNに値を加算して、空サイズ:Nの値を更新する。なお、Nに加算する値は、受信した肯定応答1400が、再設定処理の前に送信した画面情報1300に対する肯定応答1400か、それとも、再設定処理の後のウィンドウサイズが現在の値の時に送信した画面情報1300に対する肯定応答1400かで異なる。
 これは、再設定によりウィンドウサイズが変わる場合、再設定の前と後で空サイズ:Nの値1に対して対応付けられているバッファの容量が異なるためである。上述した様に、ウィンドウサイズは、バッファサイズを送信データサイズで割って得られている(式2)。ここで、送信データサイズが、サーバ装置901が送信する画面情報1300などの送信データのうちで最大のデータサイズを推定することで得られた値であるとする。この場合、ウィンドウサイズはバッファに送信データが少なくとも何個保持できるかを表す値として用いることができる。そして、この様にウィンドウサイズとバッファサイズとを対応付けた場合に、例えば、ウィンドウサイズが再設定の前に3であり、再設定後に倍の6になった場合を仮定する。この場合に、再設定の前にNの値1に割り当てられているバッファサイズは、再設定後のウィンドウサイズではNの値2個分と対応することになる。そのため、再設定の前に送信された画面情報1300に対する肯定応答1400を再設定後に受信した場合、1ではなく倍の2をNに加算しないと、再設定後のウィンドウサイズに対する実際のウィンドウの空サイズがNの値に反映されなくなってしまう。そこで、ステップS1712では、ウィンドウサイズの値が再設定前の値の時に送信した画面情報1300に対する肯定応答1400を受信した場合は、再設定によるウィンドウサイズの変動を反映したnAckPlusをNに加算し空サイズ:Nの値を更新する。なお、nAckPlusの算出については、図18を参照して後述する。一方、ステップS1712においてサーバ装置901の制御部1000は、ウィンドウサイズの値が現在設定されている値の時に送信した画面情報1300に対する肯定応答1400を受信した場合には、Nに1を加算して、空サイズ:Nの値を更新する。
 また、受信した肯定応答1400が再設定の前に送信された画面情報1300に対する肯定応答1400か、ウィンドウサイズの値が現在設定されている値の時に送信した画面情報1300に対する肯定応答1400かは以下のように判定されてもよい。例えば、受信した肯定応答1400に含まれる画面番号をステップS1709で用いる所定の回数で除算し、得られた値の小数部分は切り捨てて整数化し値Aを得る。また、ステップS1706の処理を前回実行した際に画面情報1300に付加した画面番号をステップS1709で用いる所定の回数で除算し、得られた値の小数部分は切り捨てて整数化し値Bを得る。そして、得られた値Aと値Bが等しければ、受信した肯定応答1400は、ウィンドウサイズの値が現在設定されている値の時に送信した画面情報1300と判定してもよい。また、得られた値Aが、値Bよりも小さければ受信した肯定応答1400が再設定の前に送信された画面情報1300に対する肯定応答1400であると判定してもよい。なお、受信した肯定応答が再設定の前に送信された画面情報1300に対する肯定応答1400であるか、ウィンドウサイズの値が現在設定されている値の時に送信した画面情報1300に対する肯定応答1400であるかの判定はこれに限定されるものではない。別の実施形態では、その他の手法で判定されてもよい。ステップS1712において、ステップS1704で画面データを生成してから、設定されている送信間隔の時間が経過すると、フローはステップS1704へと戻る。
 続いて、図17の右側の動作フローを参照し、クライアント装置902の制御部1100が実行する処理について説明する。図17のクライアント装置902が実行する処理の動作フローは、例えば、クライアント装置902の制御部1100が記憶部1110に格納されているプログラム1120を読み出して実行することで実施される。一実施形態においては、クライアント装置902において、サーバ装置901とのリモートデスクトップ環境を構築するアプリケーションが実行され、サーバ装置901とクライアント装置902との間の通信が確立すると、図17の右側の動作フローは開始する。
 ステップC1701においてクライアント装置902の制御部1100は、設定処理を実行する。例えば、ネットワーク環境の測定をクライアント装置902で行う場合には、クライアント装置902の制御部1100は、設定処理において図15のステップC1501からステップC1503の処理を実行してもよい。また、例えば、ネットワーク環境の測定をサーバ装置901が行う場合には、クライアント装置902の制御部1100は、設定処理において図16のステップC1601からステップC1603の処理を実行してもよい。続く、ステップC1702からステップC1706までの処理は、例えば、図15のクライアント装置902が実行するステップC1504からステップS1508までの処理とそれぞれ対応している。例えば、クライアント装置902の制御部1100は、ステップC1702からステップC1706において、対応するステップC1504からステップS1508の処理と同様の処理を実行してもよい。ステップC1702からステップC1706の処理により、クライアント装置902は、画面情報1300を受信するとバッファへと保存し、その肯定応答1400をサーバ装置901へと返す。そして、バッファに保存された画面情報1300の画面データを画面番号の順序で表示装置905の表示画面に表示する。また、表示した画面データを含む画面情報1300はバッファから消去する。
 続いて、図18を参照して、再設定処理の詳細について説明する。図18は、図17のステップS1710でサーバ装置901の制御部1000によって実行される再設定処理を例示する図である。図18の再設定処理の動作フローは、例えば、サーバ装置901の制御部1000が記憶部1010に格納されているプログラム1020を読み出して実行することで実施される。一実施形態においては、図17のステップS1710に進むと、再設定処理は開始する。
 ステップS1801においてサーバ装置901の制御部1000は、現在の空サイズ:Nの値を、変数Noldに格納する。また、サーバ装置901の制御部1000は、再設定処理を開始するまで設定されていたウィンドウサイズの値の算出に用いた送信データサイズを、nSendSizeoldに格納する。また、上述のように、ステップS1705でYesと判定されてからステップS1709までの処理は、nCountが所定の回数を超える値に達するまで繰り返される。そして、繰り返しの度に、ステップS1708では送信した画面情報1300のデータサイズが、対応するnSize[nCount]に格納される。ステップS1801ではサーバ装置901の制御部1000は、格納されているnSize[nCount](ここで、nCountは0から所定の回数である)のうちで、最大のデータサイズを有するnSize[nCount]の値を取得する。そして、サーバ装置901の制御部1000は、取得された最大のデータサイズを有するnSize[nCount]の値を新たな送信データサイズとしてnSendSizenewに格納する。
 なお、別な実施形態においては、ステップS1801で、nSendSizenewに新たな送信データサイズとして格納する値に、nSize[nCount](ここで、nCountは0から所定の回数である)の平均のデータサイズを用いても良い。nSize[nCount](ここで、nCountは0から所定の回数である)の平均のデータサイズは、例えば、以下の式によって算出されてもよい。
Figure JPOXMLDOC01-appb-M000003
 ステップS1802においてサーバ装置901の制御部1000は、取得した新たな送信データサイズであるnSendSizenewを用いて、上記式2により新たなウィンドウサイズを算出し、ウィンドウサイズの値を再設定する。ここで、バッファサイズの値は、ステップS1701で設定した値を用いる。ステップS1803でサーバ装置901の制御部1000は、再設定処理の開始前のウィンドウの空サイズであるNoldが、新たにステップS1802で設定されたウィンドウサイズにおいていくつに対応するかを算出する。この算出は、例えばステップS1803に示す式により計算される。なお、ステップS1803に示す式により、小数部分は切り上げられる。サーバ装置901の制御部1000は、ステップS1803に示す式により得られた値を、ウィンドウの空サイズの値を格納する変数であるNに再設定する。なお、ここで再設定されたNの値は、上述の例えばステップS1705、ステップS1707、及びステップS1712、で以降用いられる。
 ステップS1804においてサーバ装置901の制御部1000は、nAckPlusを算出する。nAckPlusは、再設定処理の開始前のウィンドウの空サイズであるNoldとステップS1803で再設定したNとの比率を表している。nAckPlusは、上述のようにステップS1712で、再設定の前に送信した画面情報1300に対する肯定応答1400を受信した場合に、Nに加算される値である。続いて、ステップS1805においてサーバ装置901の制御部1000は、上記式3により、例えばステップS1701で取得した往復遅延時間を、ステップS1802で新たに算出したウィンドウサイズで除算することで、送信間隔を再設定する。なお、ステップS1805において上記式3により、例えば、ステップS1701で取得した使用可能帯域で、ステップS1801で取得したnSendSizenewを除算して送信間隔を算出してもよい。続いて、ステップS1806においてサーバ装置901の制御部1000は、nCountの値と、nSize[]の値を0にリセットして本動作フローは終了し、フローは図17のステップS1712へと進む。
 以上で述べた図17及び図18の動作フローにより、サーバ装置901は、nCountが所定の回数を超える値に達するたびに再設定処理を実行する。再設定処理では、例えば、nCountの値が0から所定の回数までの繰り返しの間に送信された画面情報1300のデータサイズを基に、ウィンドウサイズ及び送信間隔が再設定される。また、現在の空サイズを示すNの値を、再設定されたウィンドウサイズの値に合わせて再設定する。更に、ウィンドウサイズの値が再設定前の値の時に送信した画面情報1300に対する肯定応答1400を受信した場合に、再設定されたNの値を更新するためのnAckPlusも算出される。図17及び図18の動作フローでは、実際に送信した画面情報1300のデータサイズに合わせてウィンドウサイズが動的に再設定されるため、画面情報1300のデータサイズの変化に合わせて、適切な送信間隔を動的に再設定することができる。また、得られた送信間隔は、例えばコマ落ちを抑制し、送信間隔をほぼ一定にするような長さに設定されている。そのため、サーバ装置901は設定されている送信間隔の時間が経過するたびに画面情報1300をクライアント装置902に送信することができる。結果として、クライアント装置902の表示画面をほぼ一定の更新間隔で更新することができ、ユーザビリティが向上する。
 上述の図17の動作フローにおいて、ステップS1701からステップS1703、ステップS1708からステップS1710までの処理では、サーバ装置901の制御部1000は、例えば、設定部1014として機能する。また、ステップS1704の処理では、サーバ装置901の制御部1000は、例えば、画面データ取得部1015として機能する。ステップS1705の処理では、サーバ装置901の制御部1000は、例えば、送信可否判定部1016として機能する。ステップS1706からステップS1707の処理では、サーバ装置901の制御部1000は、例えば、画面情報送信部1017として機能する。ステップS1711からステップS1712までの処理では、サーバ装置901の制御部1000は、例えば、調整部1018として機能する。なお、送信可否判定部1016及び画面情報送信部1017は、ステップS1705からステップS1707において送信部1019として機能する。更に、図18の動作フローにおいて、ステップS1801からステップS1806までの処理では、サーバ装置901の制御部1000は、例えば、設定部1014として機能する。
 また、ステップC1701の処理では、クライアント装置902の制御部1100は、例えば、設定部1114として機能する。また、ステップC1702の処理では、クライアント装置902の制御部1100は、例えば、画面情報受信部1115として機能する。ステップC1703の処理では、クライアント装置902の制御部1100は、例えば、肯定応答送信部1116として機能する。ステップC1704からステップC1706までの処理では、クライアント装置902の制御部1100は、例えば、画面更新部1117として機能する。
 図19は、実施形態に係るサーバ装置901を実現するための例えばコンピュータなどの情報処理装置1900のハードウェア構成を例示する図である。図19のサーバ装置901を実現するためのハードウェア構成は、例えば、プロセッサ1901、メモリ1902、記憶装置1903、読取装置1904、通信インタフェース1906、及び入出力インタフェース1907を備える。なお、プロセッサ1901、メモリ1902、記憶装置1903、読取装置1904、通信インタフェース1906、入出力インタフェース1907は、例えば、バス1908を介して互いに接続されている。
 プロセッサ1901は、メモリ1902を利用して例えば上述の動作フローの手順を記述したプログラムを含むプログラム1020を実行することにより、上述した各機能部の一部または全部の機能を提供する。例えば、サーバ装置901の制御部1000は、例えばプロセッサ1901であり、また、記憶部1010は、例えばメモリ1902、記憶装置1903、及び着脱可能記憶媒体1905を含んでいる。サーバ装置901の記憶装置1903には、例えば、プログラム1020が格納されている。サーバ装置901のプロセッサ1901は、例えば、記憶装置1903に格納されているプログラム1020を読み出して実行することで、例えば接続確立部1011、ユーザ操作受信部1012、画面更新部1013、設定部1014として機能する。また、サーバ装置901のプロセッサ1901は、例えば、記憶装置1903に格納されているプログラム1020を読み出して実行することで、画面データ取得部1015、送信可否判定部1016、画面情報送信部1017として機能する。更に、サーバ装置901のプロセッサ1901は、例えば、記憶装置1903に格納されているプログラム1020を読み出して実行することで、調整部1018、送信部1019として機能する。
 メモリ1902は、例えば半導体メモリであり、RAM領域及びROM領域を含んで構成される。記憶装置1903は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記憶装置である。
 読取装置1904は、プロセッサ1901の指示に従って着脱可能記憶媒体1905にアクセスする。着脱可能記憶媒体1905は、例えば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD-ROM、DVD等)などにより実現される。通信インタフェース1906は、プロセッサ1901の指示に従ってネットワーク1920を介してデータを送受信する。なお、ネットワーク1920は、例えば上述のネットワーク903であってよい。入出力インタフェース1907は、例えば、入力装置及び出力装置との間のインタフェースに相当する。入力装置は、例えばユーザからの指示を受け付けるキーボードやマウスなどのデバイスである。出力装置は、例えばディスプレーなどの表示装置、及びスピーカなどの音声装置である。
 実施形態に係る各プログラムは、例えば、下記の形態でサーバ装置901に提供される。
(1)記憶装置1903に予めインストールされている。
(2)着脱可能記憶媒体1905により提供される。
(3)プログラムサーバ1930から提供される。
 図20は、実施形態に係るクライアント装置902を実現するための例えばコンピュータなどの情報処理装置2000のハードウェア構成を例示する図である。図20のクライアント装置902を実現するためのハードウェア構成は、例えば、プロセッサ2001、メモリ2002、記憶装置2003、読取装置2004、通信インタフェース2006、入出力インタフェース2007、表示装置2010を備える。なお、プロセッサ2001、メモリ2002、記憶装置2003、読取装置2004、通信インタフェース2006、入出力インタフェース2007は、例えば、バス2008を介して互いに接続されている。
 プロセッサ2001は、メモリ2002を利用して例えば上述の動作フローの手順を記述したプログラムを含むプログラム1120を実行することにより、上述した各機能部の一部または全部の機能を提供する。例えば、クライアント装置902の制御部1100は、例えばプロセッサ2001であり、また、記憶部1110は、例えばメモリ2002、記憶装置2003、及び着脱可能記憶媒体2005を含んでいる。クライアント装置902の記憶装置2003には、例えば、プログラム1120が格納されている。クライアント装置902のプロセッサ2001は、例えば、記憶装置2003に格納されているプログラム1120を読み出して実行することで、接続確立部1111、ユーザ操作取得部1112、ユーザ操作送信部1113、設定部1114として機能する。また、クライアント装置902のプロセッサ2001は、例えば、記憶装置2003に格納されているプログラム1120を読み出して実行することで、画面情報受信部1115、肯定応答送信部1116、画面更新部1117として機能する。
 メモリ2002は、例えば半導体メモリであり、RAM領域及びROM領域を含んで構成される。記憶装置2003は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記憶装置である。
 読取装置2004は、プロセッサ2001の指示に従って着脱可能記憶媒体2005にアクセスする。着脱可能記憶媒体2005は、例えば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD-ROM、DVD等)などにより実現される。通信インタフェース2006は、プロセッサ2001の指示に従ってネットワーク2020を介してデータを送受信する。なお、ネットワーク2020は、例えば上述のネットワーク903であってよい。入出力インタフェース2007は、例えば、入力装置及び出力装置との間のインタフェースに相当する。例えば、図20では、入出力インタフェース2007には、ディスプレーなどの表示装置2010が接続されている。また、入出力インタフェース2007には、スピーカなどのその他の出力装置が接続されていてもよい。入出力インタフェース2007には、例えばキーボードやマウスなどの入力装置が接続されていてもよい。
 実施形態に係る各プログラムは、例えば、下記の形態でクライアント装置902に提供される。
(1)記憶装置2003に予めインストールされている。
(2)着脱可能記憶媒体2005により提供される。
(3)プログラムサーバ2030から提供される。
 以上において、いくつかの実施形態について説明した。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態を成すことができることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
  900 システム
  901 サーバ装置
  902 クライアント装置
  903 ネットワーク
  905 表示装置
 1011 接続確立部
 1012 ユーザ操作受信部
 1013 画面更新部
 1014 設定部
 1015 画面データ取得部
 1016 送信可否判定部
 1017 画面情報送信部
 1018 調整部
 1019 送信部
 1111 接続確立部
 1112 ユーザ操作取得部
 1113 ユーザ操作送信部
 1114 設定部
 1115 画面情報受信部
 1116 肯定応答送信部
 1117 画面更新部
 1900 情報処理装置
 1901 プロセッサ
 1902 メモリ
 1903 記憶装置
 1904 読取装置
 1905 着脱可能記憶媒体
 1906 通信インタフェース
 1907 入出力インタフェース
 1908 バス
 2000 情報処理装置
 2001 プロセッサ
 2002 メモリ
 2003 記憶装置
 2004 読取装置
 2005 着脱可能記憶媒体
 2006 通信インタフェース
 2007 入出力インタフェース
 2008 バス
 2010 表示装置

Claims (6)

  1.  クライアント装置との間の通信において利用可能な帯域に、前記通信の往復遅延時間を乗算して、前記クライアント装置が有するバッファのバッファサイズを算出する工程と、
     前記バッファサイズを前記クライアント装置に対して設定されている送信データサイズで除算することで得られた実数を整数化して整数値を算出し、前記整数値を空サイズに設定する工程と、
     前記往復遅延時間を前記整数値で除算して得られた値、又は、前記送信データサイズを前記帯域で除算して得られた値を、送信間隔として設定する工程と、
     前記送信間隔が経過するたびに、前記空サイズが第1の値よりも大きいか否かを判定し、前記第1の値よりも大きい場合にリモートデスクトップの画面の画像データを生成して前記クライアント装置に送信し、前記空サイズから第2の値を減算する工程と、
     前記減算する工程により送信した前記画像データに対する応答を、前記クライアント装置から受信するたびに、前記空サイズに前記第2の値を加算する工程と、
    を含む、情報処理装置が実行する方法。
  2.  前記減算する工程が所定の数の画像データを前記クライアント装置に送信した場合に、該所定の数の画像データの送信データサイズのうちで最大の送信データサイズを、前記送信データサイズに再設定し、該再設定された送信データサイズで前記バッファサイズを除算し得られた実数を整数化した値を前記整数値に再設定し、前記再設定された整数値で前記往復遅延時間を除算することで得られた値、又は、前記帯域で前記再設定された送信データサイズを除算することで得られた値を、前記送信間隔に再設定する、ことを含む再設定する工程を更に含む、請求項1に記載の方法。
  3.  前記減算する工程が所定の数の画像データを前記クライアント装置に送信した場合に、該所定の数の画像データの送信データサイズの平均の送信データサイズを前記送信データサイズに再設定し、該再設定された送信データサイズで前記バッファサイズを除算し得られた実数を整数化した値を前記整数値に再設定し、前記再設定された整数値で前記往復遅延時間を除算することで得られた値、又は、前記帯域で前記再設定された送信データサイズを除算することで得られた値を、前記送信間隔に再設定する、ことを含む再設定する工程を更に含む、請求項1に記載の方法。
  4.  前記再設定する工程は、前記減算する工程が所定の数の画像データを前記クライアント装置に送信した場合に、前記送信データサイズに前記空サイズを乗じた値を、前記再設定された送信データサイズで除算して得た実数を整数化した値を前記空サイズに再設定し、該再設定された空サイズを、再設定前の前記空サイズで除算することで補正加算値を算出する、ことを更に含み、
     前記加算する工程は、前記再設定する工程が実行されている場合に、前記減算する工程により送信した前記画像データに対する応答を前記クライアント装置から受信するたびに、該応答が前記再設定する工程の実行前に前記クライアント装置に送信した画像データであるか、前記再設定する工程の実行後に前記クライアント装置に送信した画像データであるかを判定し、該応答が前記再設定する工程の実行前に前記クライアント装置に送信した画像データである場合に前記再設定された空サイズに前記補正加算値を加算し、該応答が前記再設定する工程の実行後に前記クライアント装置に送信した画像データである場合に前記再設定された空サイズに前記第2の値を加算する、
     ことを特徴とする、請求項2又は3に記載の方法。
  5.  クライアント装置との間の通信において利用可能な帯域に、前記通信の往復遅延時間を乗算して、前記クライアント装置が有するバッファのバッファサイズを算出し、
     前記バッファサイズを前記クライアント装置に対して設定されている送信データサイズで除算することで得られた実数を整数化して整数値を算出し、前記整数値を空サイズに設定し、
     前記往復遅延時間を前記整数値で除算して得られた値、又は、前記送信データサイズを前記帯域で除算して得られた値を、送信間隔として設定し、
     前記送信間隔が経過するたびに、前記空サイズが第1の値よりも大きいか否かを判定し、前記第1の値よりも大きい場合にリモートデスクトップの画面の画像データを生成して前記クライアント装置に送信し、前記空サイズから第2の値を減算し、
     送信した前記画像データに対する応答を、前記クライアント装置から受信するたびに、前記空サイズに前記第2の値を加算する、
     処理を情報処理装置に実行させるプログラム。
  6.  クライアント装置との間の通信において利用可能な帯域に、前記通信の往復遅延時間を乗算して、前記クライアント装置が有するバッファのバッファサイズを算出し、前記バッファサイズを前記クライアント装置に対して設定されている送信データサイズで除算することで得られた実数を整数化して整数値を算出し、前記整数値を空サイズに設定し、前記往復遅延時間を前記整数値で除算して得られた値、又は、前記送信データサイズを前記帯域で除算して得られた値を、送信間隔として設定する設定部と、
     前記送信間隔が経過するたびに、前記空サイズが第1の値よりも大きいか否かを判定し、前記第1の値よりも大きい場合にリモートデスクトップの画面の画像データを生成して前記クライアント装置に送信し、前記空サイズから第2の値を減算する送信部と、
     前記送信部が送信した前記画像データに対する応答を、前記クライアント装置から受信するたびに、前記空サイズに前記第2の値を加算する調整部と、
    を含む、情報処理装置。
PCT/JP2013/069774 2013-07-22 2013-07-22 情報処理装置、方法、及びプログラム WO2015011757A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201380078237.5A CN105393231A (zh) 2013-07-22 2013-07-22 信息处理装置、方法、以及程序
PCT/JP2013/069774 WO2015011757A1 (ja) 2013-07-22 2013-07-22 情報処理装置、方法、及びプログラム
EP13890240.8A EP3026566A4 (en) 2013-07-22 2013-07-22 INFORMATION PROCESSING DEVICE, METHOD AND PROGRAM
JP2015528027A JP5994944B2 (ja) 2013-07-22 2013-07-22 情報処理装置、方法、及びプログラム
US14/993,023 US20160127213A1 (en) 2013-07-22 2016-01-11 Information processing device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/069774 WO2015011757A1 (ja) 2013-07-22 2013-07-22 情報処理装置、方法、及びプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/993,023 Continuation US20160127213A1 (en) 2013-07-22 2016-01-11 Information processing device and method

Publications (1)

Publication Number Publication Date
WO2015011757A1 true WO2015011757A1 (ja) 2015-01-29

Family

ID=52392843

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/069774 WO2015011757A1 (ja) 2013-07-22 2013-07-22 情報処理装置、方法、及びプログラム

Country Status (5)

Country Link
US (1) US20160127213A1 (ja)
EP (1) EP3026566A4 (ja)
JP (1) JP5994944B2 (ja)
CN (1) CN105393231A (ja)
WO (1) WO2015011757A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019098258A1 (ja) * 2017-11-17 2019-05-23 日本電気株式会社 制御装置、制御対象機器、制御システム、制御方法、制御対象機器の制御方法、制御装置のプログラム、および制御対象機器のプログラム
JP2020191521A (ja) * 2019-05-21 2020-11-26 京セラドキュメントソリューションズ株式会社 電子機器および表示内容制御プログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10979470B2 (en) * 2015-12-28 2021-04-13 Industrial Technology Research Institute Server device, client device and dynamic image transmission method for virtual desktop infrastructure
CN110225125A (zh) * 2019-06-14 2019-09-10 广州四维培基电子有限公司 一种基于网络的协同计算服务的系统及终端
CN115913939A (zh) * 2022-11-02 2023-04-04 山东乾云启创信息科技股份有限公司 一种云桌面图像传输过程中图像数据实时修改方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001285860A (ja) * 2000-03-31 2001-10-12 Matsushita Electric Ind Co Ltd 転送レート制御装置、復号装置、媒体及び情報集合体
JP2002518951A (ja) * 1998-06-19 2002-06-25 ジェネラル・インスツルメント・コーポレイション プッシュ・データフローとともに使用するビデオ・レート・バッファ
JP2005260302A (ja) 2004-03-09 2005-09-22 Nec Corp 動画情報伝送方法および装置
JP2006262116A (ja) * 2005-03-17 2006-09-28 Nec Viewtechnology Ltd 画像送信装置及び画像伝送方法
JP2007143113A (ja) * 2005-10-19 2007-06-07 Matsushita Electric Ind Co Ltd 送受信システム、送信装置、および送信方法
JP2009049529A (ja) 2007-08-14 2009-03-05 Canon Inc 通信制御装置、通信制御方法、及びコンピュータプログラム
JP2013105367A (ja) * 2011-11-15 2013-05-30 Hitachi Ltd シンクライアントシステムおよびサーバ装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391717B2 (en) * 2003-06-30 2008-06-24 Microsoft Corporation Streaming of variable bit rate multimedia content
US8125910B2 (en) * 2004-06-25 2012-02-28 Nec Corporation Communication system
US9344533B2 (en) * 2012-10-23 2016-05-17 Microsoft Technology Licensing, Llc Receive window auto-tuning
US7827237B2 (en) * 2007-03-12 2010-11-02 Citrix Systems, Inc. Systems and methods for identifying long matches of data in a compression history
US7818422B2 (en) * 2007-12-31 2010-10-19 Microsoft Corporation Real-time monitoring of a routing server
US8171154B2 (en) * 2009-09-29 2012-05-01 Net Power And Light, Inc. Method and system for low-latency transfer protocol
DE112012003741T5 (de) * 2011-09-09 2014-08-07 Stoneware Inc. Verfahren und Vorrichtung für eine serverseitige Fernarbeitsaufnahme und -wiedergabe

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002518951A (ja) * 1998-06-19 2002-06-25 ジェネラル・インスツルメント・コーポレイション プッシュ・データフローとともに使用するビデオ・レート・バッファ
JP2001285860A (ja) * 2000-03-31 2001-10-12 Matsushita Electric Ind Co Ltd 転送レート制御装置、復号装置、媒体及び情報集合体
JP2005260302A (ja) 2004-03-09 2005-09-22 Nec Corp 動画情報伝送方法および装置
JP2006262116A (ja) * 2005-03-17 2006-09-28 Nec Viewtechnology Ltd 画像送信装置及び画像伝送方法
JP2007143113A (ja) * 2005-10-19 2007-06-07 Matsushita Electric Ind Co Ltd 送受信システム、送信装置、および送信方法
JP2009049529A (ja) 2007-08-14 2009-03-05 Canon Inc 通信制御装置、通信制御方法、及びコンピュータプログラム
JP2013105367A (ja) * 2011-11-15 2013-05-30 Hitachi Ltd シンクライアントシステムおよびサーバ装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3026566A4

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019098258A1 (ja) * 2017-11-17 2019-05-23 日本電気株式会社 制御装置、制御対象機器、制御システム、制御方法、制御対象機器の制御方法、制御装置のプログラム、および制御対象機器のプログラム
JPWO2019098258A1 (ja) * 2017-11-17 2020-10-22 日本電気株式会社 制御装置、制御対象機器、制御システム、制御方法、制御対象機器の制御方法、制御装置のプログラム、および制御対象機器のプログラム
US11363622B2 (en) 2017-11-17 2022-06-14 Nec Corporation Control apparatus, to-be-controlled device, control system, control method, method for controlling to-be-controlled device, program for control apparatus, and program for to-be-controlled device
JP2020191521A (ja) * 2019-05-21 2020-11-26 京セラドキュメントソリューションズ株式会社 電子機器および表示内容制御プログラム

Also Published As

Publication number Publication date
CN105393231A (zh) 2016-03-09
EP3026566A1 (en) 2016-06-01
JPWO2015011757A1 (ja) 2017-03-02
EP3026566A4 (en) 2016-08-10
JP5994944B2 (ja) 2016-09-21
US20160127213A1 (en) 2016-05-05

Similar Documents

Publication Publication Date Title
JP5994944B2 (ja) 情報処理装置、方法、及びプログラム
JP5920006B2 (ja) 画面更新制御プログラム、画面更新制御方法、および情報処理装置
US20150229960A1 (en) Information processing device, method, and terminal device
US9826035B2 (en) Piecewise linear, probabilistic, backoff method for retrying message delivery in a cloud-based computing environment
US9166915B2 (en) Communication device, communication method, and recording medium
US8848736B2 (en) Method and apparatus for transmitting data
US20150236938A1 (en) Bandwidth measuring device, bandwidth measuring method and non-transitory computer readable medium
JP2019079268A (ja) データ収集装置及びデータ収集方法
US9705956B2 (en) Image transmitting method, program and apparatus
US9729417B2 (en) Communication-information measuring device and non-transitory computer readable medium
US9037749B2 (en) Information processing apparatus and image transmission method
US20160155429A1 (en) Information processing apparatus and terminal device
US9722898B2 (en) Quality estimation methods, quality estimation apparatus, and recording medium
US20140068081A1 (en) Transfer device, and transfer method
KR101829596B1 (ko) 정보 처리 장치 및 정보 처리 방법
US11233886B2 (en) Storage medium and packet analyzing device
US9882751B2 (en) Communication system, communication controller, communication control method, and medium
JP5982436B2 (ja) 画面転送サーバ装置、および画面転送方法
JP6040144B2 (ja) 表示制御装置、表示制御方法、および表示制御用プログラム
JP5652891B2 (ja) リモートデスクトップシステム
US10338734B2 (en) Information processing device, information processing system, and non-transitory computer-readable storage medium
WO2013073125A1 (ja) 端末、通信システムおよび操作共有方法
US10062136B2 (en) Recording medium having stored image display control program, information processing system, and image display control method
JP2015008389A (ja) 情報処理装置、情報処理方法、および、コンピュータプログラム
TW201924309A (zh) 資料通信裝置、通信系統、資料通信方法及程式

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201380078237.5

Country of ref document: CN

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

Ref document number: 13890240

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015528027

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2013890240

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE