INTERESTING review on Networking LIBS

BlitzMax Forums/BlitzMax Programming/INTERESTING review on Networking LIBS

Trader3564(Posted 2008) [#1]
Quote from:
http://www.motorsport-sim.org/index.php?go=taskView&tsk=750

Necessary points:
- Be cross-platform. At least Unix/Linux and Windows.
- Be open source.
- Be actively developed or maintained.
- Have good documentation or have a good community, so that we can get help easily.
- Allow both lossy and orderless transmission (UDP or similar), and lossless and ordered transmission (TCP or similar).

Additional points:
- Thread safe, parallelizable.
- Optimized bandwidth (smallest overhead possible).
- Have very little lag.
- MacOS/PSX/XBox support.

DISCARDED LIBS


RakNet
-Would make mosp undistributable with most Linux distros (see View comment).

Twisted
-Python-only API.

HawkNL
-Not actively maintained. Last update 18 August 2004
"Fork" RaptorNL stalled

NetWib
-Not actively maintained.

EasyAsIO
-Very new project
-Only tcp atm
+Uses boost asio

NetLib4Games
-Windows only

IPStream
+Multi-threaded
+Streams
-No UDP support.

NetStreams
+Streams
-Simple
-Pre-beta

ZIG Game Engine
-Depends on HawkNL
-Part of documentation in portuguese + messy documentation

Zoidcom
-No source
-Official licence announcement will be made available with release 1.0.(current 0.6)



LIBS IN REVIEW (for ussage i assume)


OpenTNL
+Supports MacOS.
-Paid license needed for supporting XBox, PS2 and GC
+GPL (free to use with GPL project)
-Not actively maintained (3 years since last commit in SF.NET CVS and last file release)

GNet
-GNet requires GLib 1.2 or 2.0.
-Geared towards desktop applications.
+Licensed under the LGPL.
+Supports MacOS X.
-Last update in Feb-2005.
+Built-in support for hashing and SOCKS proxying
-No ordering or reliability guarantee for UDP

Antinat
+Solaris and MacOS X support.

Stun

DyConnect
+Supports "high-level" networking by splitting lower-level data streams up into messages.
+Extensible module system
+Built-in support for timers, zlib compression and hashing
+Good cross-platform support: Windows, Linux, Mac OS X

Low Prio Transport Lib
+Supports the data channel concept
-Has not released any files yet (relatively new project)
-Relatively low activity level (7 months since last commit in SF.NET CVS and project registered 8 months ago)
-Does not appear to compile on Windows

NetClass
+Good cross-platform support: Windows, Linux, Mac OS X, BSD
-Not actively maintained (4 years since last commit in SF.NET CVS and 5 years since last file release)
-Low-level library
-No ordering or reliability guarantee for UDP

LibSocketCPP
-Not actively maintained (6 years since last file release)
-Low-level library
-Missing UDP (checked latest source code)
-Does not appear to compile on Windows

EndPoint
-Not actively maintained (2 years since last commit in SF.NET CVS and last file release)
-Low-level library
-No ordering or reliability guarantee for UDP

SDL Net
+Supports the data channel concept
+Very good cross-platform support: Windows, Mac OS, Mac OS X, Solaris, BSD, Irix, QNX
-Low-level library
-No ordering or reliability guarantee for UDP

ENet
-NOT intended to be a general purpose high level networking library ..
+MIT like license
+Used in Cube cubeengine.com/
-UDP only

ZeroC Ice
+High-level networking library with RPC semantics and IDL
+GPL license
+Extensible module system (modules for auto-updating/patching, federation, SSL, object persistence)
+Good cross-platform support: Windows, Linux, Mac OS X, Solaris, HP-UX
-No ordering or reliability guarantee for UDP




Retimer(Posted 2008) [#2]
I wouldn't even consider using any of those under review - they need to take some rules out. No ordering/reliability on half of the accepted, some aren't even updated anymore, and hardly anyone uses several of them in the first place for fair discussion and support.

Just my thoughts. I am biased though as a RakNet fanatic, so removing that from the accepted list put my gears into offensive mode.


plash(Posted 2008) [#3]
I would suggest you to stop posting in the idea that some amazing network library will come along and save the day, and get down to the code. Like I said before, sockets are simple and writing your own engine will allow you to implement things easily (depending on your coding style, abstract?) later on, if needed.


plash(Posted 2008) [#4]
Here is a sockets example, using TCP: http://files.filefront.com/tcptestzip/;12634708;/fileinfo.html