MUSCLE

Logiciel capture d'écran:
MUSCLE
Détails logiciels:
Version: 6.82 Mise à jour
Date de transfert: 22 Jun 18
Développeur: Jeremy Friesner
Licence: Gratuit
Popularité: 26

Rating: 5.0/5 (Total Votes: 1)

MUSCLE est l'acronyme de Multi Client Server Client Linkage Environment et est un système de messagerie open source, gratuit, robuste, évolutif et multiplateforme qui comprend des composants serveur et client. Il vous aidera à écrire toutes sortes de logiciels distribués, des jeux multijoueurs et des clients de chat IRC, aux applications de calcul SETI.


Caractéristiques en un coup d'oeil

Avec MUSCLE, les utilisateurs pourront facilement personnaliser le "serveur musclé" inclus en définissant leur propre logique de session ou protocole de diffusion de messages. Le logiciel vous aide à écrire votre code client dans l'un des langages de programmation C ++, C, C #, Java, Delphi ou Python.

Le programme utilise BMessage-like muscle :: Messages, supporte l'envoi de muscle aplati :: Messages entre ordinateurs via les flux TCP (Transmission Control Protocol), déploie un serveur & ldquo; musclé & rdquo; sur un serveur, vous permettant d'écrire des programmes clients qui peuvent être utilisés pour communiquer avec le serveur.

En outre, il inclut des API de messagerie monodisque et multithread qui prennent en charge tous les langages de programmation mentionnés ci-dessus. Le serveur & ldquo; musclé & rdquo; peut être facilement personnalisé en définissant un protocole de diffusion de messages ou une logique de session.

Démarrer avec MUSCLE

Après une connexion réussie, les programmes clients peuvent déterminer qui d'autre est connecté au serveur central, ainsi que pour stocker les muscles :: Messages dans la RAM (mémoire système) et envoyer du muscle :: Messages à d'autres clients connectés au serveur. Notez que les programmes clients peuvent s'abonner à des données spécifiques sur le serveur et recevoir des notifications instantanées lorsque les données changent.


Prend en charge un large éventail de routages de messages

Le logiciel a été conçu pour prendre en charge un large éventail de routages de messages, y compris les routages monodiffusion, de diffusion et de multidiffusion grâce à un mécanisme de routage intelligent et hiérarchique.


OS pris en charge et disponibilité

MUSCLE s'exécute sur n'importe quel système d'exploitation compatible POSIX. Il est distribué sous la forme d'une archive de sources unique et universelle qui permet aux utilisateurs d'optimiser l'application pour leur système GNU / Linux. Les plates-formes matérielles 32 bits et 64 bits sont actuellement prises en charge.

Nouveautés de cette version:

  • tests / Makefile-mt ne tente plus de compiler testreflectsession sauf lors de l'exécution sur un OS supporté par testreflectsession.
  • Avez-vous modifié et réarrangé le "MUSCLE by Example" de façon mineure? pages.
  • Remplacement d'un certain nombre de `tags` dans les MkDocs par [URLs] (...)
  • Suppression de l'héritage privé de CountedObject de toutes les classes qui le possédaient - maintenant, ils incluent une variable de membre privé CountedObject. Cela a été fait uniquement parce que tout cet héritage privé encombrait les graphes d'héritage DOxygen.
  • Ajout d'une macro DECLARE_COUNTED_OBJECT à l'objet CountedObject.h afin que toute surcharge de mémoire potentielle de CountedObjects puisse être éliminée dans les cas où le comptage d'objets n'est pas souhaité.
  • Suppression du support pour le -DMUSCLE_AVOID_OBJECT_COUNTING et ajout d'une macro -DMUSCLE_ENABLE_OBJECT_COUNTING à sa place. (Autrement dit, la classe CountedObject est maintenant désactivée par défaut et doit être explicitement activée pour pouvoir l'utiliser)
  • Ajout & quot; MUSCLE par exemple & quot; documentation pour MiscUtilityFunctions. {cpp, h}
  • Changé un certain nombre de `tags` dans la source MUSCLE-by-Example MkDocs dans [urls] afin que les méthodes qu'ils mentionnent puissent être rapidement passées en revue.
  • server / Makefile spécifie maintenant libmuscle.a après le fichier main () .o.
  • Correction de quelques avertissements gcc dans le dossier tests (selon les suggestions de Mika)
  • UnparseFile () ne citait pas correctement les mots-clés avec des espaces. Fixé.
  • Correction des dépendances dans le "MUSCLE par l'exemple". exemples 'Makefiles.

Quoi de neuf dans la version:

  • Ajout d'une méthode pratique ShrinkToFit () à la file d'attente, Hashtable, et les classes de chaînes. Cette méthode réduit l'objet de sorte que la quantité de mémoire allouée en interne correspond à la taille des données qu'il contient.
  • Hashtable :: EnsureSize () et Queue :: EnsureSize () prennent maintenant un argument facultatif (allowShrink), qui (s'il est défini sur true) permet de réaffecter le tableau alloué en interne plus petit s'il est plus grand que nécessaire.
  • Ajustement du comportement d'expansion du tampon de la classe String pour être un peu plus efficace.
  • Ajout d'une protection contre une récursion infinie potentielle qui pourrait se produire lors de la journalisation d'un "OUT OF MEMORY". erreur après un échec d'allocation de mémoire, si un LogCallback a tenté d'allouer de la mémoire.

Quoi de neuf dans la version 6.01:

  • Ajout d'une méthode de commodité PrependWord () à la classe String.
  • Ajout des méthodes de commodité WithReplacements () à la classe String.
  • Ajout d'une méthode SetExplicitDelayMicros () à la classe DetectNetworkConfigChangesSession.
  • Ajout d'une méthode IsCopperDetected () à la classe NetworkInterfaceInfo, afin que le code puisse déterminer si une prise Ethernet est connectée à un câble.
  • Ajout d'un & quot; quietsend & quot; argument à hexterm.
  • La méthode virtuelle NetworkInterfacesChanged () de la classe DetectNetworkConfigChangesSession a été modifiée pour prendre un argument qui identifie les interfaces réseau en particulier qui ont changé. Cette fonctionnalité n'est actuellement implémentée que sous Linux, MacOS / X et Windows. Pour les autres systèmes d'exploitation, l'argument sera toujours une liste vide.
  • Correction d'un bogue dans l'implémentation Linux de DetectNetworkConfigChangesSession qui pouvait provoquer une erreur de segmentation si recvmsg () renvoyait une erreur (par exemple en raison de la réception d'un signal).

Nouveautés dans la version 6.00:

  • Réécrit la classe SSLSocketDataIO pour mieux fonctionner avec les E / S non bloquantes (en conjonction avec la nouvelle classe SSLSocketAdapterGateway).
  • Ajout des implémentations de SSLSocketDataIO :: SetPrivateKey () et de SSLSocketDataIO :: SetCertificate () qui prennent un ByteBuffer en argument.
  • Ajout d'une classe SSLSocketAdapterGateway utilisée pour gérer l'automate interne d'OpenSSL lors de l'utilisation d'une classe SSLSocketDataIO avec votre passerelle.
  • Ajout des méthodes SetSSLPrivateKey () et GetSSLPrivateKey () à la classe ReflectServer, pour faciliter l'activation de l'authentification SSL sur toutes les connexions TCP entrantes. Ces méthodes sont disponibles ssi MUSCLE_ENABLE_SSL est défini.
  • Ajout des méthodes SetSSLPublicKeyCertificate () et GetSSLPublicKeyCertificate () à la classe ReflectServer, pour faciliter l'activation de l'authentification SSL sur les connexions TCP sortantes. Ces méthodes sont disponibles ssi MUSCLE_ENABLE_SSL est défini.
  • Ajout des méthodes SetSSLPrivateKey () et SetSSLPublicKeyCertificate () à la classe MessageTransceiverThread pour faciliter l'activation de la fonctionnalité SSL lors de l'utilisation des E / S threadées.
  • Ajout d'un dossier ssl_data avec quelques informations sur la génération de paires de clés publiques / privées OpenSSL, et d'un exemple de paire de clés à utiliser pour tester OpenSSL.
  • Lorsque MUSCLE_ENABLE_SSL est défini, muscled accepte désormais un argument facultatif 'privatekey = filename'. Lorsque spécifié, le mode SSL sera activé et musclé n'acceptera que les connexions TCP entrantes qui présentent des clés publiques correspondant à cette clé privée / certificat.
  • Lorsque MUSCLE_ENABLE_SSL est défini, portablereflectclient et qt_example acceptent désormais un argument facultatif 'publickey = filename'. Lorsque spécifié, le mode SSL sera activé et ces clients se connecteront à muscled à l'aide d'OpenSSL et présenteront ce fichier comme leur identifiant.
  • Ajout d'un & quot; Animate & quot; case à cocher à la démo qt_example. En le vérifiant, la fenêtre déplace automatiquement son indicateur. C'est amusant et utile si vous voulez tester un scénario où plusieurs clients génèrent du trafic simultanément.
  • Fait la démonstration de qt_example plus jolie.
  • Renommer les macros C ++ 11-helper dans Hashtable.h et Queue.h pour les rendre moins susceptibles d'entrer en conflit avec les macros d'autres packages. * Correction de quelques erreurs mineures dans la classe SSLSocketDataIO. o Renommé SSLSocketDataIO :: SetKey () en SetPrivateKey (). o Renommé SSLSocketDataIO :: SetCertificate () en SetPublicKeyCertificate (). o AbstractMessageIOGateway :: SetDataIO () est maintenant une méthode virtuelle.

Quoi de neuf dans la version 5.92:

  • Prise en charge améliorée de la sémantique de mouvement C ++ 11 dans les classes Queue et Hashtable (activée uniquement lorsque -DMUSCLE_USE_CPLUSPLUS11 est défini)
  • Ajout d'une instrumentation à la classe String pour que je puisse voir combien de fois un objet String est copié, déplacé, etc (activé seulement quand -DMUSCLE_COUNT_STRING_COPY_OPERATIONS est défini)
  • Ajout d'une fonction PrintAndClearStringCopyCounts () qui imprimera les données de l'opération String collectées ci-dessus.
  • Ajout d'un peu de magie SFINAE à muscleSwap () pour qu'il permute en appelant SwapContents () lorsque c'est possible, plutôt qu'en copiant sur un objet temporaire.
  • Ajout d'un constructeur initializer-list et surcharge de AddTailMulti () à la classe Queue (disponible uniquement lorsque -DMUSCLE_USE_CPLUSPLUS11 est défini, bien sûr)
  • Renommé la file d'attente et les surcharges de tableau de Queue :: AddTail () en AddTailMulti (), pour éviter les conflits avec le nouveau support d'analyse de modèles C ++ 11.
  • Renommer la file d'attente et les surcharges de tableau de la file d'attente Queue :: AddHead () en AddHeadMulti (), pour éviter les conflits avec le nouveau support d'analyse de modèles C ++ 11.
  • Macro MCRASH_IMPL remplacée par un appel à assert (false).
  • Un peu plus de tweakage compatible avec Android.
  • La plupart des programmes du dossier tests n'étaient pas compilés sous C ++ 11. Fixé.
  • Correction de plusieurs bogues potentiels détectés par l'outil d'analyse statique de clang.

Nouveautés dans la version 5.91:

  • Ajout de la méthode convenienceCanPut () à la classe Hashtable.
  • Ajout de la méthode convenienceCanAdd () à la classe Queue.
  • a changé DoMutexAtomicIncrement () en une fonction inline pour rendre l'appel plus efficace.
  • Modifié QMessageTransceiverThread et QAcceptSocketsThread pour appeler QCoreApplication :: postEvent () plutôt que QApplication :: postEvent (), pour autoriser les applications Qt non-GUI.
  • Mise à jour du document Guide du débutant pour refléter l'amélioration du support UDP de MUSCLE.
  • Fusionné dans certains changements de compatibilité Android fournis par Jean-François Mullet.
  • L'utilisation de l'indicateur de compilation MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS entraînerait le blocage de MUSCLE au démarrage en raison d'un problème d'ordre d'opérations. Cela a été corrigé maintenant.
  • L'indicateur de compilation MUSCLE_USE_MUTEXES_FOR_ATOMIC_OPERATIONS n'était précédemment utilisé que si aucune autre implémentation de AtomicCounter n'était disponible. Maintenant, le drapeau a une priorité plus élevée, donc la définition de l'indicateur signifie que Mutex sera utilisé, même si un autre mécanisme (plus efficace) est disponible.

Quoi de neuf dans la version 5.90:

  • Ajout d'une méthode GetPacketMaximumSize () à la classe DataIO pour permettre au code de la passerelle de gérer plus intelligemment la communication par paquets UDP.
  • MessageIOGateway fonctionne désormais utilement avec UDPSocketDataIO.
  • Ajout de fonctions de modèle CreateObjectFromArchiveMessage () à Message.h, pour servir de contrepartie côté restauration à GetArchiveMessageFromPool (), etc.
  • AtomicCounter :: AtomicIncrement () retourne maintenant un booléen (vrai si la valeur du nouveau compteur est égale à un).
  • Modification de la classe HashtableIterator afin que les itérations Hashtable en lecture seule soient désormais sécurisées pour les threads même si l'indicateur HTIT_FLAG_NOREGISTER n'est pas spécifié.
  • Ajout d'une classe muscle_thread_id à SetupSystem.h, pour représenter correctement un ID de thread de manière neutre au niveau de l'implémentation.
  • Ajout d'un "blocage" & quot; programme dans le dossier de tests. Ce programme risque délibérément de créer une impasse, comme un moyen d'exercer / démontrer le test deadlockfinder.
  • Ajout de la prise en charge d'un indicateur de ligne de commande -DMUSCLE_AVOID_THREAD_SAFE_HASHTABLE_ITERATORS, pour ceux qui préfèrent éviter le surcoût de la sécurité automatique des threads et promettent de fournir des arguments HTIT_FLAG_NOREGISTER à la main si nécessaire.
  • Ajout d'un cache de recherche LRU optionnel à la fonction GetHostByName (), afin qu'il puisse retourner plus rapidement lorsque les mêmes noms d'hôtes sont résolus encore et encore.
  • Ajout d'une fonction SetHostNameCacheSettings () qui active et ajuste le cache de recherche LRU dans GetHostByName ().
  • Ajout du support pour & quot; dnscache & quot; et "dnscachesize" arguments de ligne de commande dans HandleStandardDaemonArgs (), pour permettre la spécification en ligne de commande du comportement du cache de recherche LRU.
  • Modification de la classe Hashtable afin que les valeurs des membres _iterHead, _iterTail et _freeHead soient maintenant des uint32 plutôt que des pointeurs, afin de réduire l'utilisation de la mémoire.
  • Suppression de la méthode ThreadLocalStorage :: SetFreeHeldObjectsOnExit () et ajout d'un argument booléen à son constructeur, car pthreads ne vous permet pas de modifier ce paramètre après l'appel de pthread_key_create ().
  • Déplacé GetCurrentThreadID () dans la classe muscle_thread_id en tant que fonction membre statique, et modifié pour renvoyer un objet muscle_thread_id plutôt que unsigned long.
  • Modification du nom d'hôte par défaut pour les sessions sans adresse IP connue de & quot; & quot; Les "crochets" dans la chaîne précédente ont une signification spéciale à la sortie de 5.84, et cela pourrait interférer avec la correspondance non-voulue entre les chemins de nœud.
  • Les méthodes CalculateChecksum () dans Message.cpp ont été modifiées pour être plus robustes dans la détection des différences de transposition de données.
  • Suppression du support MUSCLE_USE_QT_FOR_ATOMIC_OPERATIONS de AtomicCounter.h, car la classe QAtomicInt de Qt ne prend pas en charge la fonctionnalité requise par la nouvelle valeur de retour de la méthode AtomicIncrement ().
  • Supprimé MessageIOGateway :: FlattenMessage () et MessageIOGateway :: UnflattenMessage (). Ajouté à leur place: MessageIOGateway :: FlattenHeaderAndMessage () et MessageIOGateway :: UnflattenHeaderAndMessage (). Ces nouvelles méthodes traitent à la fois les octets d'en-tête et le corps du message.
  • Ajout d'un fichier udpproxy.vcproj dans le dossier tests, pour aider à compiler udpproxy sous Windows.
  • Message: Aplatir () itère maintenant sur les champs du message une fois, au lieu de deux fois.
  • GetCurrentThreadID () est maintenant une fonction inline, car il peut maintenant être appelé souvent par HashtableIterator.
  • Modifié le code deadlockfinder pour utiliser Queues au lieu de Hashtables, puisque muscle_thread_id ne peut plus être utilisé comme un type de clé Hashtable.
  • Correction de testudp.cpp pour utiliser correctement un MessageIOGateway pour sa communication UDP.
  • Tweaked le ifdefs dans FilePathInfo.cpp un peu plus de sorte que statInfo.st_birthtimespec ne sera pas consulté lors de l'utilisation des SDK MacOS / X qui ne le fournissent pas.
  • MessageDataIOGateway n'essaie plus de dégrader un message d'un tampon de données zlib-deflated qu'il n'a pas pu regonfler.
  • Correction d'un bogue dans SendDataUDP () qui pouvait renvoyer une erreur à SendDataUDP () lors de l'envoi à une adresse multicast en mode non-bloquant, et le tampon de sortie était plein.

Nouveautés dans la version 5.85:

  • Ajout d'appels LogTime (MUSCLE_LOG_DEBUG) à tous les chemins d'erreur dans MessageIOGateway :: DoInputImplementation () et Message :: Unflatten (), afin de déterminer plus facilement quand les connexions TCP sont interrompues en raison de données la corruption.
  • Ajout d'une fonction PreviousOperationHadTransientFailure (), qui renvoie true si et seulement si errno est EINTR ou ENOBUFS.
  • Spécifier spamspersecond = -1 va maintenant amener hexterm à envoyer des données de spam aussi vite que possible.
  • L'implémentation MUSCLE_USE_POLL de SocketMultiplexer.h fournissait POLLERR à WSAPoll () mais WSAPoll () ne prenait pas en charge POLLERR et WSAPoll () renvoyait une erreur lorsque cela arrivait. A contourner le problème en filtrant POLLERR lors de la compilation sous Windows.
  • Correction d'un bogue où send () renvoyant ENOBUFS pouvait entraîner l'arrêt de la connexion socket, même si ENOBUFS n'est pas une condition fatale.
  • SocketMultiplexer.cpp ne compilait pas lorsque MUSCLE_USE_POLL était défini. Fixé.
  • La méthode ZLibCodec :: Deflate () ne parviendrait pas à compresser toutes les données dans un très grand tampon (par exemple, plus de 42 Mo). Fixé.

Nouveautés dans la version 5.84:

  • La syntaxe de la plage numérique de la classe StringMatcher a été étendue afin que vous puissiez maintenant spécifier plusieurs plages. Par exemple, "& quot;" correspondrait aux chaînes "19", "20", "21", "25", "30", "31", [...] et "50".
  • Ajout des fonctions de conversion GetCurrentTime64ForRunTime64 () et GetRunTime64ForCurrenTime64 () à TimeUtilityFunctions.h.
  • Ajout d'une méthode utilitaire GetDescendant () à la classe DataNode.
  • Ajout de constructeurs de mouvement et d'opérateurs d'affectation de mouvement C ++ 11 aux classes Hashtable, Queue, String, Message et ByteBuffer. Pour la rétrocompatibilité avec les anciens compilateurs, ce code ne sera compilé que si -DMUSCLE_USE_CPLUSPLUS11 est spécifié sur la ligne de compilation.

  • La classe
  • SharedMemory va maintenant se nerf elle-même dans une classe de mémoire non partagée si -DMUSCLE_FAKE_SHARED_MEMORY est spécifié.
  • Ajout d'un test testfilepathinfo au dossier de tests.
  • Mise à jour de tous les en-têtes des avis de droits d'auteur pour lire 2000-2013 Meyer Sound.
  • Ajout d'espaces entre des jetons de macros (par exemple UINT32_FORMAT_SPEC) et des constantes de chaîne (par exemple "Hello") pour rendre les compilateurs C ++ 11 heureux.
  • ByteBuffer.cpp avait une erreur de syntaxe qui l'empêcherait de compiler sur des hôtes big-endian. Fixé.
  • MacOS / X uniquement: remplacements d'appels de fonction Carbon obsolètes remplacés par des équivalents Mach, pour éviter les avertissements de dépréciation sous 10.8.x.

Quoi de neuf dans la version 5.83:

  • Des versions supplémentaires de InflateByteBuffer () et DeflateByteBuffer () prendre un ByteBufferRef en argument.
  • Suppression de certaines méthodes obsolètes / non utilisées (EnsureBufferSize () et FreeLargeBuffer ()) de la classe AbstractMessageIOGateway.
  • Correction de quelques fautes de frappe dans les commentaires dans le sous-dossier delphi.
  • La classe Hashtable ne génère plus d'avertissements lorsqu'elle est compilée sous MSVC avec -DMUSCLE_AVOID_MINIMIZED_HASHTABLES défini.
  • Correction d'un bogue dans IPAddressAndPort :: ToString () qui provoquait le formatage ambigu des chaînes d'adresses IPv4 lorsque (preferIPv4Style) était défini sur false.

Logiciel similaire

MongoDB
MongoDB

17 Aug 18

Qercus
Qercus

14 Apr 15

progress_sa
progress_sa

20 Feb 15

D'autres logiciels de développeur Jeremy Friesner

AudioMove
AudioMove

2 Jun 15

Commentaires à MUSCLE

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!