I implemented my own RFB server and everything is working fine on the Windows desktop. When using the implementation on Windows CE, which has a send buffer limitation of about 16k, the UltraVNC client either displays nothing at all or only something which apperars to be the first rectangle in the FrameBufferUpdate message.
The socket function 'send' splits the full FrameBufferUpdate message into submessages. Can UltraVNC handle this? If not, what could I do?
Update: UltraVNC 1.4.3.6 and UltraVNC SC 1.4.3.6: https://forum.uvnc.com/viewtopic.php?t=37885
Important: Please update to latest version before to create a reply, a topic or an issue: https://forum.uvnc.com/viewtopic.php?t=37864
Join us on social networks and share our announcements:
- Website: https://uvnc.com/
- GitHub: https://github.com/ultravnc
- Mastodon: https://mastodon.social/@ultravnc
- Facebook: https://www.facebook.com/ultravnc1
- X/Twitter: https://x.com/ultravnc1
- Reddit community: https://www.reddit.com/r/ultravnc
- OpenHub: https://openhub.net/p/ultravnc
Important: Please update to latest version before to create a reply, a topic or an issue: https://forum.uvnc.com/viewtopic.php?t=37864
Join us on social networks and share our announcements:
- Website: https://uvnc.com/
- GitHub: https://github.com/ultravnc
- Mastodon: https://mastodon.social/@ultravnc
- Facebook: https://www.facebook.com/ultravnc1
- X/Twitter: https://x.com/ultravnc1
- Reddit community: https://www.reddit.com/r/ultravnc
- OpenHub: https://openhub.net/p/ultravnc
Can UltraVNC handle partial messages?
-
- Posts: 2
- Joined: 2015-12-02 17:28
Re: Can UltraVNC handle partial messages?
Did some more research and found out the following:
UltraVNC can handle partial messages provided they are properly sliced. This means that you can send the FrameBufferUpdate message header including the number of rectangles to follow in the first message and then each rectangle it its own message. By this you can update the whole screen provided each one of the rectangles fits into the send buffer.
UltraVNC can handle partial messages provided they are properly sliced. This means that you can send the FrameBufferUpdate message header including the number of rectangles to follow in the first message and then each rectangle it its own message. By this you can update the whole screen provided each one of the rectangles fits into the send buffer.
- Rudi De Vos
- Admin & Developer
- Posts: 6863
- Joined: 2004-04-23 10:21
- Contact:
Re: Can UltraVNC handle partial messages?
while ( recv_size<required_size)
size=recv();
recv_size=recv_size+size
)
The viewer or server call the recv() multiple times
The same for sending, just loop until all data has been sended, this is indepened on the actual sendbuffer,
with a small sendbuffer you just send it in smaller packets.
while ( send_size<required_size)
size=send()
send_size=send_size+size;
Wifi split data in small packets, so split and combine is part of the tcp protocol.
On server/viewer you keep repeating send recv until all data has been handled.
size=recv();
recv_size=recv_size+size
)
The viewer or server call the recv() multiple times
The same for sending, just loop until all data has been sended, this is indepened on the actual sendbuffer,
with a small sendbuffer you just send it in smaller packets.
while ( send_size<required_size)
size=send()
send_size=send_size+size;
Wifi split data in small packets, so split and combine is part of the tcp protocol.
On server/viewer you keep repeating send recv until all data has been handled.