|
|
|
Date Posted: |
March 29th, 2000
|
|
|
Last Updated: |
July 17th, 2009
|
|
|
License: |
BSD/MIT |
|
|
Downloads: |
21,031 total; 786 recently |
|
|
Page Views: |
148,560 total |
|
|
User Rating: |
 |
 |
|
8.89 / 10, with 106 votes |
|
Jump to the Downloads section |
|
 |
 |
About MUSCLE:
The MUSCLE system is a robust, somewhat scalable, cross-platform client-server solution for dynamic distributed applications for BeOS and other operating systems. It's distributed in source code form, and includes a ready-to-compile server, utility classes, and example clients. Tested under BeOS and Linux, but should compile and run under any POSIX compliant OS with a C++ compiler.
With MUSCLE, you can:
- Use BMessage-like PortableMessages under any operating system.
- Send flattened PortableMessages from one computer to another over TCP streams, eliminating compatibility and protocol versioning hassles.
- Run a "muscled server" on a central machine, or write/download client programs to log in to the server and communicate through it. Once logged in, client programs can discover who else is logged in, send PortableMessages to other clients, and store PortableMessages in the server's RAM for other clients to download later. Clients can also "subscribe" to selected data on the server, and be automatically notified whenever it changes. Unicast, multicast, and broadcast messaging are all supported via an intelligent regular-expression based routing mechanism. Writing multiplayer games, IRC style chat applications, SETI style distributed calculation apps, or any other type of distributed software is made easy because MUSCLE handles all the dirty work for you!
- Customize the included "muscled" server by defining your own session logic or message-streaming protocol. (Note that this is only necessary for certain specialized applications--the standard server provides sufficient functionality for most things)
- Or just use the included message, string, dataIO, hashtable, dequeue, string-tokenizer, reference-count, regular expression parser, and object-pool classes by themselves, as handy cross platform utility classes. All source code is included, and you are free to use and abuse it any way you wish.
- See the Beginner's Guide to MUSCLE (available in the archive or on the support page) for a more detailed description of the system and its capabilites.
Note: All source code in this archive is Copyright 2000 Level Control Systems. However, it is released as open source with an unrestricted license.
|
 |
|
 |
Latest Version |
 |
|
 |
| |
 |
|
Details about this version:
4.63 Released 7/17/2009
- When compiled with MUSCLE_USE_IPV6 enabled, MUSCLE now does automatic
transparent remapping of IPv4-compatible IPv6 addresses into IPv4-mapped
IPv6 addresses. This allows MUSCLE servers to be 100% compatible with
both IPv4 and IPv6 clients (on platforms that support dual stacks, of
course) without any additional effort on the programemr's part.
- Added SetAutomaticIPv4AddressMappingEnabled() and
GetAutomaticIPv4AddressMappingEnabled() calls to
NetworkUtilityFunctions.{cpp,h}.
- Added CAdd*() and CPrepend*() convenience methods to the Message
API, to the common "add value to Message unless it's the default value"
idiom quicker and easier to express.
- Added Contains() convenience methods to the String class.
- Added an optional (optRetTotal) argument to
SharedUsageLimitProxyMemoryAllocator::GetCurrentMemoryUsage().
- Added a ParseHumanReadableTimeIntervalString() convenience function
to MiscUtilityFunctions.cpp.
- Added an static Exists() method to the Directory class.
- Added a PutOrRemove() convenience method to the Hashtable class.
- Added an IsValidIP() function to NetworkUtilityFunctions.{cpp,h}.
- GetNextEventFromInternalThread() now has an optLocation parameter that
can be used to find out the IP address and port that a session connected
to (or what accepted from).
- The SessionConnected() signals of the QMessageTransceiverThread and
QMessageTransceiverHandler classes now include an IPAddressAndPort object
indicating what the session connected to.
- The SessionAccepted() signal of the QMessageTransceiverThread class now
includes an IPAddressAndPort object indicating where the session was accepted from.
- Added SetAsyncConnectDestination() and GetAsyncConnectDestination() methods
to the AbstractReflectSession class.
- Added ToString() methods to the SegmentedStringMatcher and
StringMatcher classes.
- SegmentedStringMatcher no longer bothers to allocate a StringMatcher
object for clauses that are represented by "*".
o Renamed DataNode::CountChildren() to DataNode::GetNumChildren().
o Renamed DataNode::SetMaxKnownChildID() to DataNode::SetMaxKnownChildIDHint().
o Renamed Message::CountNames() to Message::GetNumNames().
o Rewrote the static internal function AdjustValue() in
SharedUsageLimitAllocator.cpp to give more informative error output.
o Removed Message::GetConstPointer() since you can use GetPointer()
to do the same thing (by assigning a const pointer to the result).
o Documented some methods that were previously not documented.
* Fixed a bug where SharedUsageLimitAllocator::ResetDaemonCounter()
could push the cumulative memory counter into negative territory.
* Inet_NtoA was allowing the IPv6-specific "@3" interface-index
suffix into IPv4-style address strings. Fixed.
* SetupSystem.cpp's Muscle_GetCurrentThread() wasn't working properly
on 64-bit OS's. Fixed.
|
| |
 |
|
Intel Version - requires R5 (1.8 MB) |
44 downloads |
|
 |
|
 |
 |
| |
|
|
| Add Additional Location |
 |
| |
 |
|
PowerPC Version - requires R5 (1.8 MB) |
8 downloads |
|
 |
|
 |
 |
| |
|
|
| Add Additional Location |
 |
|
 |
|
| Source Included |
 |
 |
 |
 |
 |
| |
 |
 |
Like this app? Have questions or comments?
Why not tell the author? Use the "e-mail publisher" link to get in touch with the publisher; they usually love getting feedback.
|
|
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
|
|
 |
 |
 |
| |
Recent Downloads - # 173
Total Downloads - # 103
Total Views - # 32
User Ratings - # 52
|
 |
 |
 |
 |
| |
Class Libraries
Instant Messaging Servers
Miscellaneous Servers
|
 |
 |
 |
 |
 |
1. BePodder - 9.80
2. QEMU - 9.68
3. ScummVM - 9.57
4. cpu_fix - 9.42
5. Jukebox - 9.40
6. libdl.so - 9.40
7. Haiku AGP busm... - 9.35
8. vim6 - 9.31
9. Beezer - 9.26
10. HandBrake - 9.25
|
 |
 |
 |
 |
 |
1. BeOS 5 Perso... - 12,999
2. Realtek RTL8... - 12,734
3. Ati Radeon G... - 11,946
4. ATI Rage 128... - 7,209
5. Ensoniq Audio... - 7,168
6. USB Joystick... - 5,394
7. Broadcom 440x... - 5,194
8. USB Serial dr... - 4,599
9. S3 Trio 64 v2... - 4,474
10. Intel Extreme... - 4,303
|
 |
 |
 |
 |
| You are not logged in.
Login
|
 |
 |
 |
 |
|