nitroshare-desktop icon indicating copy to clipboard operation
nitroshare-desktop copied to clipboard

Choose receiver first then select files to send

Open jeffli678 opened this issue 7 years ago • 3 comments

I think this is a usability improvement and the idea comes from a similar piece of software, Dukto. (Dukto can be considered a simpler version of Nitroshare).

I think there should be a list of all online users and I first decide who is the receiver and then I select the files to send. Had there been a list, I can clearly see if the target is online and I can ask the peer to start (and correctly set up) Nitroshare before I pick the files. In the current process, sometimes I select the file and find the receiver is not online. So I have to cancel the current share, make sure the target is online, and then redo the share.

Another thing Dukto is good is it offers an avatar (usually the system user's profile picture). This can save me time and make me always select the correct target receiver. Since both projects use QT and C++, I think you may actually borrow some of the code from Dukto to do it (if the license allows).

Btw, for me, the downside of Dukto is it is too slow on Gigabyte LAN. I modified the code to reach a 60MB/s, but it is still too slow (compared to the windows file sharing speed ~120MB/s). So I find this project. And I hope it can have all the benefits of Dukto. Thank you!

jeffli678 avatar Apr 24 '18 04:04 jeffli678

This is actually a relatively simple fix. I will give this some consideration. One of the features which is partly implemented is shareboxes, which are little widgets that sit on the desktop and let you drag-and-drop files for instant transfer to a specific device. This would skip the device selection step and could also be programmed to light-up or glow if the device is currently online.

An avatar or image is certainly a possibility, though it would need to be implemented separately from device discovery since the UDP packets are nowhere near big enough for transferring an image. This could probably be implemented in a plugin.

As a sidenote, NitroShare is specifically designed to transfer items as fast as possible and is more than capable of reaching 125 MB/s on a gigabit connection. (I have confirmed this on my home network.)

nathan-osman avatar Apr 24 '18 04:04 nathan-osman

Good!

Just a small tip: when you deal with the avatar, you may find the way to get an avatar on Mac is a little bit twisted (at least to me). The good news is the dukto author already finds a way to do it.

I have already verified the speed by myself. It is very fast and is indeed ~120MB/s, reaching the upper bound. A small problem is when used on a slow connection, it cannot use the full bandwidth. It is relatively trivial because speed is only critical when we transfer large files on high-speed LAN. I guess the problem is with some hardcoded chunk size that is suitable for a high-speed network but will perform poorly on a slower connection (like a wifi). But I do not read the source code so I am not sure.

Using adaptive parameters can help, but could be very complex. In the far future, maybe you can consider using UDT as the transfer protocol, which is better than TCP for file transfer.

jeffli678 avatar Apr 24 '18 04:04 jeffli678

Oh, I see the setting for the buffer size is default to 64KiB. That could be what I called chunk size. Anyway, the adaptive buffer size is complex and leave people to play with the size of buffer manually looks fine.

jeffli678 avatar Apr 24 '18 04:04 jeffli678